unit principal;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ComCtrls, StdCtrls, math, idGlobal;

type
  TFormPrincipal = class(TForm)
    MainMenu1: TMainMenu;
    Comunicao1: TMenuItem;
    AbrePortaSerial1: TMenuItem;
    FechaPortaSerial1: TMenuItem;
    Sair1: TMenuItem;
    Leituras1: TMenuItem;
    LeituraX1: TMenuItem;
    LeituradaMemriaFiscal1: TMenuItem;
    PorData1: TMenuItem;
    PorDataMFD1: TMenuItem;
    PorRedulo1: TMenuItem;
    PorReduoMFD1: TMenuItem;
    StatusBar1: TStatusBar;
    StatusBar2: TStatusBar;
    Memo1: TMemo;
    CupomFiscal1: TMenuItem;
    AbrirCupomFiscal1: TMenuItem;
    Abre1: TMenuItem;
    IdentificaConsumidor1: TMenuItem;
    AumentaDescrioItem1: TMenuItem;
    UsaUnidadedeMedida1: TMenuItem;
    VendeItem1: TMenuItem;
    Cancelamentos1: TMenuItem;
    CancelaCupom2: TMenuItem;
    CancelaCupomMFD1: TMenuItem;
    VendeItem3decimais1: TMenuItem;
    VendeItemDepartamento1: TMenuItem;
    InciodoDia1: TMenuItem;
    Aberturadodia1: TMenuItem;
    DescontoSobreItemVendido1: TMenuItem;
    AcrscimoDescontoItemMFD1: TMenuItem;
    CancelaItemAnterior1: TMenuItem;
    CancelaItemGenrico1: TMenuItem;
    CancelaAcrscimoDescontoItemMFD1: TMenuItem;
    IniciaFechamentodoCupom1: TMenuItem;
    IniciaFechamentoCupomMFD1: TMenuItem;
    AcrscimoouDescontoSubtotalMFD1: TMenuItem;
    CancelaAcrescimoDescontoSubtotalMFD1: TMenuItem;
    otalizaCupomMFD1: TMenuItem;
    EfetuaFormadePagamento1: TMenuItem;
    EfetuaFormaPagamentoDescricaoForma1: TMenuItem;
    EfetuaFormaPagamentoMFD1: TMenuItem;
    erminaFechamentoCupom1: TMenuItem;
    FechaCupom1: TMenuItem;
    FechaCupomResumido1: TMenuItem;
    AtivaDesativaCorteProximoMFD1: TMenuItem;
    CupomAdicionalMFD1: TMenuItem;
    ProgramaArredondaMENTO1: TMenuItem;
    ProgramaTruncamento1: TMenuItem;
    EstornodeFormadePagamento1: TMenuItem;
    EstornodeFormasdePagamento1: TMenuItem;
    ComprovanteCrditoeDbitoTEF1: TMenuItem;
    AbreComprovanteNoFiscalVinculado1: TMenuItem;
    AbreComprovanteNoFiscalVinculadoMFD1: TMenuItem;
    UsaComprovanteNoFiscalVinculadoTEF1: TMenuItem;
    UsaComprovanteNoFiscalVinculado1: TMenuItem;
    FechaComprovanteNoFiscalVinculado1: TMenuItem;
    SegundaViaNoFiscalVinculadoMFD1: TMenuItem;
    ReimpressoNoFiscalVinculadoMFD1: TMenuItem;
    EstornoNoFiscalVinculadoMFD1: TMenuItem;
    ImprimirRespostaCartao: TMenuItem;
    ImprimirResposta1: TMenuItem;
    FechaRelatrio1: TMenuItem;
    RelatrioGerencialTEF1: TMenuItem;
    UsaRelatorioGerencialMFDTEF1: TMenuItem;
    Comprovantes1: TMenuItem;
    Suprimento1: TMenuItem;
    Sangria1: TMenuItem;
    AbreRecebimentoNoFiscalMFD1: TMenuItem;
    AbreRecebimentoNoFiscal1: TMenuItem;
    RecebimentoNoFiscal1: TMenuItem;
    EfetuaRecebimentoNaoFiscalMFD1: TMenuItem;
    CancelaItemNoFiscalMFD1: TMenuItem;
    AcrscimoDescontoItemNoFiscalMFD1: TMenuItem;
    AcrscimoDescontoSubtotalRecebimentoMFD1: TMenuItem;
    otalizaRecebimentoMFD1: TMenuItem;
    IniciaFechamentoRecebimentoNoFiscalMFD1: TMenuItem;
    FechaRecebimentoNoFiscalMFD1: TMenuItem;
    CancelaRecebimentoNoFiscalMFD1: TMenuItem;
    EfetuaFormaPagamentoNoFiscal1: TMenuItem;
    RelatrioGerencial1: TMenuItem;
    AbreRelatrioGerencial1: TMenuItem;
    AbreRelatrioGerencialMFD1: TMenuItem;
    EnviaTextoCNF1: TMenuItem;
    RelatorioGerencial1: TMenuItem;
    UsaRelatrioGerencialMFD1: TMenuItem;
    FechaRelatrioGerencial1: TMenuItem;
    FechaRelatrioXouZ1: TMenuItem;
    EncerramentodoDia1: TMenuItem;
    FechamentodoDia1: TMenuItem;
    ReduoZ1: TMenuItem;
    Autenticao1: TMenuItem;
    Autenticao2: TMenuItem;
    AutenticaoMFD1: TMenuItem;
    AutenticaoSTR1: TMenuItem;
    VerificaDocAutenticao1: TMenuItem;
    Gaveta1: TMenuItem;
    AcionaGaveta1: TMenuItem;
    VerificaEstadoGaveta1: TMenuItem;
    VerificaEstadoGavetaStr1: TMenuItem;
    Cheque1: TMenuItem;
    ProgramaMoedaSingular1: TMenuItem;
    ProgramaMoedaPlural1: TMenuItem;
    IncluiCidadeFavorecido1: TMenuItem;
    VerificaStatusCheque1: TMenuItem;
    VerificaStatusChequeSTR1: TMenuItem;
    ImprimeCheque1: TMenuItem;
    ImprimeChequeMFD1: TMenuItem;
    ImprimeCpiaCheque1: TMenuItem;
    CancelaImpressoCheque1: TMenuItem;
    LeituraChequeMFD1: TMenuItem;
    LeituraLayoutsCheque1: TMenuItem;
    OpenDialog1: TOpenDialog;
    Status1: TMenuItem;
    Programao1: TMenuItem;
    ValoresdaltimaTransao1: TMenuItem;
    AcumuladoresDirios1: TMenuItem;
    Contadores1: TMenuItem;
    ECF1: TMenuItem;
    Sintegra1: TMenuItem;
    RelatrioSintegraMFD1: TMenuItem;
    Diversos1: TMenuItem;
    ValoresapsaReduoZ1: TMenuItem;
    DadosltimaReduoZ1: TMenuItem;
    MapaResumoMFD1: TMenuItem;
    RegistrosTipo601: TMenuItem;
    RegistrosTipo60Mestre1: TMenuItem;
    RegistrosTipo60Analtico1: TMenuItem;
    RegistrosTipo60AnalticoMFD1: TMenuItem;
    MovimentoGravadoECF1: TMenuItem;
    LeituraXSerial1: TMenuItem;
    LeituraMemriaFiscalSerialData1: TMenuItem;
    PorData2: TMenuItem;
    PorDataMFD2: TMenuItem;
    PorReduo1: TMenuItem;
    PorReduoMFD2: TMenuItem;
    Download1: TMenuItem;
    FormatoDadosMFD1: TMenuItem;
    CapturaDocumentosMFD1: TMenuItem;
    COTEPE1: TMenuItem;
    abelaMercadoriaseServios1: TMenuItem;
    ReproduzirMemriaFiscalMFD1: TMenuItem;
    GeraRegistrosCAT52MFD1: TMenuItem;
    CdigodeBarras1: TMenuItem;
    ConfiguraCdigodeBarrasMFD1: TMenuItem;
    CODABAR1: TMenuItem;
    EAN131: TMenuItem;
    EAN81: TMenuItem;
    CODE391: TMenuItem;
    ITFIntercalado2x51: TMenuItem;
    PDF4171: TMenuItem;
    UPCA1: TMenuItem;
    UPCE1: TMenuItem;
    MsgLog1: TMenuItem;
    ArquivoSintegra20041: TMenuItem;
    otalizadoresParciaisMFD1: TMenuItem;
    NomeiaTotalizadorNaoSujeitoaoICMS1: TMenuItem;
    Apaga1: TMenuItem;
    procedure AbrePortaSerial1Click(Sender: TObject);
    procedure FechaPortaSerial1Click(Sender: TObject);
    procedure Sair1Click(Sender: TObject);
    procedure LeituraX1Click(Sender: TObject);
    procedure ReduoZ1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure AbrirCupomFiscal1Click(Sender: TObject);
    procedure Abre1Click(Sender: TObject);
    procedure IdentificaConsumidor1Click(Sender: TObject);
    procedure PorData1Click(Sender: TObject);
    procedure PorDataMFD1Click(Sender: TObject);
    procedure PorRedulo1Click(Sender: TObject);
    procedure PorReduoMFD1Click(Sender: TObject);
    procedure AumentaDescrioItem1Click(Sender: TObject);
    procedure UsaUnidadedeMedida1Click(Sender: TObject);
    procedure CancelaCupom2Click(Sender: TObject);
    procedure CancelaCupomMFD1Click(Sender: TObject);
    procedure VendeItem1Click(Sender: TObject);
    procedure VendeItem3decimais1Click(Sender: TObject);
    procedure VendeItemDepartamento1Click(Sender: TObject);
    procedure Aberturadodia1Click(Sender: TObject);
    procedure DescontoSobreItemVendido1Click(Sender: TObject);
    procedure AcrscimoDescontoItemMFD1Click(Sender: TObject);
    procedure CancelaItemAnterior1Click(Sender: TObject);
    procedure CancelaItemGenrico1Click(Sender: TObject);
    procedure CancelaAcrscimoDescontoItemMFD1Click(Sender: TObject);
    procedure IniciaFechamentodoCupom1Click(Sender: TObject);
    procedure IniciaFechamentoCupomMFD1Click(Sender: TObject);
    procedure AcrscimoouDescontoSubtotalMFD1Click(Sender: TObject);
    procedure CancelaAcrescimoDescontoSubtotalMFD1Click(Sender: TObject);
    procedure otalizaCupomMFD1Click(Sender: TObject);
    procedure EfetuaFormadePagamento1Click(Sender: TObject);
    procedure EfetuaFormaPagamentoDescricaoForma1Click(Sender: TObject);
    procedure EfetuaFormaPagamentoMFD1Click(Sender: TObject);
    procedure erminaFechamentoCupom1Click(Sender: TObject);
    procedure FechaCupom1Click(Sender: TObject);
    procedure FechaCupomResumido1Click(Sender: TObject);
    procedure AtivaDesativaCorteProximoMFD1Click(Sender: TObject);
    procedure CupomAdicionalMFD1Click(Sender: TObject);
    procedure ProgramaArredondaMENTO1Click(Sender: TObject);
    procedure ProgramaTruncamento1Click(Sender: TObject);
    procedure EstornodeFormasdePagamento1Click(Sender: TObject);
    procedure AbreComprovanteNoFiscalVinculado1Click(Sender: TObject);
    procedure AbreComprovanteNoFiscalVinculadoMFD1Click(Sender: TObject);
    procedure UsaComprovanteNoFiscalVinculadoTEF1Click(Sender: TObject);
    procedure FechaComprovanteNoFiscalVinculado1Click(Sender: TObject);
    procedure SegundaViaNoFiscalVinculadoMFD1Click(Sender: TObject);
    procedure ReimpressoNoFiscalVinculadoMFD1Click(Sender: TObject);
    procedure EstornoNoFiscalVinculadoMFD1Click(Sender: TObject);
    procedure ImprimirRespostaCartaoClick(Sender: TObject);
    procedure ImprimirResposta1Click(Sender: TObject);
    procedure FechaRelatrio1Click(Sender: TObject);
    procedure RelatrioGerencialTEF1Click(Sender: TObject);
    procedure UsaRelatorioGerencialMFDTEF1Click(Sender: TObject);
    procedure Suprimento1Click(Sender: TObject);
    procedure Sangria1Click(Sender: TObject);
    procedure AbreRecebimentoNoFiscalMFD1Click(Sender: TObject);
    procedure AbreRecebimentoNoFiscal1Click(Sender: TObject);
    procedure RecebimentoNoFiscal1Click(Sender: TObject);
    procedure EfetuaRecebimentoNaoFiscalMFD1Click(Sender: TObject);
    procedure CancelaItemNoFiscalMFD1Click(Sender: TObject);
    procedure AcrscimoDescontoItemNoFiscalMFD1Click(Sender: TObject);
    procedure AcrscimoDescontoSubtotalRecebimentoMFD1Click(
      Sender: TObject);
    procedure otalizaRecebimentoMFD1Click(Sender: TObject);
    procedure IniciaFechamentoRecebimentoNoFiscalMFD1Click(
      Sender: TObject);
    procedure FechaRecebimentoNoFiscalMFD1Click(Sender: TObject);
    procedure CancelaRecebimentoNoFiscalMFD1Click(Sender: TObject);
    procedure EfetuaFormaPagamentoNoFiscal1Click(Sender: TObject);
    procedure AbreRelatrioGerencial1Click(Sender: TObject);
    procedure AbreRelatrioGerencialMFD1Click(Sender: TObject);
    procedure EnviaTextoCNF1Click(Sender: TObject);
    procedure RelatorioGerencial1Click(Sender: TObject);
    procedure UsaRelatrioGerencialMFD1Click(Sender: TObject);
    procedure FechaRelatrioGerencial1Click(Sender: TObject);
    procedure FechaRelatrioXouZ1Click(Sender: TObject);
    procedure FechamentodoDia1Click(Sender: TObject);
    procedure Autenticao2Click(Sender: TObject);
    procedure AutenticaoMFD1Click(Sender: TObject);
    procedure AutenticaoSTR1Click(Sender: TObject);
    procedure VerificaDocAutenticao1Click(Sender: TObject);
    procedure AcionaGaveta1Click(Sender: TObject);
    procedure VerificaEstadoGaveta1Click(Sender: TObject);
    procedure VerificaEstadoGavetaStr1Click(Sender: TObject);
    procedure ProgramaMoedaSingular1Click(Sender: TObject);
    procedure ProgramaMoedaPlural1Click(Sender: TObject);
    procedure IncluiCidadeFavorecido1Click(Sender: TObject);
    procedure VerificaStatusCheque1Click(Sender: TObject);
    procedure VerificaStatusChequeSTR1Click(Sender: TObject);
    procedure ImprimeCheque1Click(Sender: TObject);
    procedure ImprimeChequeMFD1Click(Sender: TObject);
    procedure ImprimeCpiaCheque1Click(Sender: TObject);
    procedure CancelaImpressoCheque1Click(Sender: TObject);
    procedure LeituraChequeMFD1Click(Sender: TObject);
    procedure LeituraLayoutsCheque1Click(Sender: TObject);
    procedure Programao1Click(Sender: TObject);
    procedure ValoresdaltimaTransao1Click(Sender: TObject);
    procedure AcumuladoresDirios1Click(Sender: TObject);
    procedure Contadores1Click(Sender: TObject);
    procedure ECF1Click(Sender: TObject);
    procedure RelatrioSintegraMFD1Click(Sender: TObject);
    procedure Diversos1Click(Sender: TObject);
    procedure ValoresapsaReduoZ1Click(Sender: TObject);
    procedure DadosltimaReduoZ1Click(Sender: TObject);
    procedure MapaResumoMFD1Click(Sender: TObject);
    procedure RegistrosTipo601Click(Sender: TObject);
    procedure RegistrosTipo60Mestre1Click(Sender: TObject);
    procedure RegistrosTipo60Analtico1Click(Sender: TObject);
    procedure RegistrosTipo60AnalticoMFD1Click(Sender: TObject);
    procedure LeituraXSerial1Click(Sender: TObject);
    procedure PorData2Click(Sender: TObject);
    procedure PorDataMFD2Click(Sender: TObject);
    procedure PorReduo1Click(Sender: TObject);
    procedure PorReduoMFD2Click(Sender: TObject);
    procedure Download1Click(Sender: TObject);
    procedure FormatoDadosMFD1Click(Sender: TObject);
    procedure CapturaDocumentosMFD1Click(Sender: TObject);
    procedure abelaMercadoriaseServios1Click(Sender: TObject);
    procedure ReproduzirMemriaFiscalMFD1Click(Sender: TObject);
    procedure GeraRegistrosCAT52MFD1Click(Sender: TObject);
    procedure ConfiguraCdigodeBarrasMFD1Click(Sender: TObject);
    procedure CODABAR1Click(Sender: TObject);
    procedure CODE391Click(Sender: TObject);
    procedure EAN131Click(Sender: TObject);
    procedure EAN81Click(Sender: TObject);
    procedure ITFIntercalado2x51Click(Sender: TObject);
    procedure UPCA1Click(Sender: TObject);
    procedure UPCE1Click(Sender: TObject);
    procedure MsgLog1Click(Sender: TObject);
    procedure ArquivoSintegra20041Click(Sender: TObject);
    procedure otalizadoresParciaisMFD1Click(Sender: TObject);
    procedure NomeiaTotalizadorNaoSujeitoaoICMS1Click(Sender: TObject);
    procedure Apaga1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
    CPF_CNPJ, NomeConsumidor, EnderecoConsumidor:String; // Abre Cupom Fiscal
    cDatai, cDataf, cReducaoi, cReducaof, tipoLeitura:String; // Leitura da MF
    Descricao_Complementar, UnidadeMedida:String; // aumenta descrição e usa unidade medida
    CodigoItem, DescricaoItem, AliquotaItem, TipoQtdeItem, QtdeItem, UnitarioItem, TipoDescontoItem, DescontoItem, taxaitem, AcrescimoItem, IndiceDepto:String; // vende item
    DecimaisItem, guilhotina:Integer; // Vende Item
    ValorInicioDia, PagtoInicioDia:String; // abertura inicio dia
    ItemDesc, TipoDescontoAcrescimo:String; // Desconto sobre item;
    TextoPagamento, parcelas :String; // Efetua Forma Pagamento Descricao
    PagtoOrigem, PagtoDestino:String; // Estorno Forma Pagamento
    PagtoTEF, ValorTef, nCOO:String; // Abrir COmprovante Não fiscal Vinculado (TEF)
    IndiceRelatorio:String; // Relatorio Gerencial
    cData, cHora: String; // Redução Z
    NomeMoeda: String; // PRograma Moeda
    Cidade, Favorecido, Banco, Verso :String;
    CodigoBarras:String;
  end;

  type
        RegDecompoeAliquota = record
        Tipo: Char;
        Indice: Char;
        Taxa: Array[0..3] of char ;
        Separador: Char ;
    end;

  type
        RegTaxaAliquota = record
        Taxa: Array[0..3] of char ;
        Separador: Char ;
    end;

    type
        RegDescricaoFormasPagamento = record
        Legenda: Array[0..15] of char ;
        Separador: Char ;
    end;
    type
        RegDescricaoNaoFiscal = record
        Legenda: Array[0..14] of char ;
        Separador: Char ;
    end;
    type
        RegDescricaoRelatorio = record
        Legenda: Array[0..18] of char ;
        Separador: Char ;
    end;
    type
        RegTotaisFPagto = record
        Legenda: Array[0..15] of char ;
        Acumulado: Array[0..19] of char ;
        ValorCupom: Array[0..19] of char ;
        Vinculado: Char ;
        Separador: Char ;
    end;

    type RegTotaisAliquotas = record
         Tipo:char;
         Taxa: Array[0..3] of char;
         Totalizador: Array[0..13] of char;
    end;

    type
        RegTotaisdaVenda = record
        DescontoICMS: Array[0..13] of char ;
        DescontoISS: Array[0..13] of char ;
        AcrescimoICMS: Array[0..13] of char ;
        AcrescimoISS: Array[0..13] of char ;
        CancelamentoICMS: Array[0..13] of char ;
        CancelamentoISS: Array[0..13] of char ;
        VLICMS: Array[0..13] of char ;
        VLISS: Array[0..13] of char ;
        VBICMS: Array[0..13] of char ;
        VBISS: Array[0..13] of char ;
        QtdeAliq: Array[0..2]of char ;
        Aliquotas: Array[0..15] of RegTotaisAliquotas;
        FINICMS:Array[0..2] of Array[0..18] of char;
        FINISS:Array[0..2] of Array[0..18] of char;
        DescontoNaoFiscal: Array[0..13] of char ;
        AcrescimoNaoFiscal: Array[0..13] of char ;
        CancelamentoNaoFiscal: Array[0..13] of char ;
    end;

    type RegTotaisNaoFiscais= record
         Descricao: Array[0..18] of char;
         Valor: Array[0..14] of char;
    end;

const
Mens_St1:Array[0..7] of String=('Número de Parâmetros do comando inválido',
                       'Cupom Fiscal Aberto',
                       'Comando inexistente',
                       'Irrelevante',
                       'Impressora em erro',
                       'Erro de relógio',
                       'Pouco papel',
                       'Fim de papel');

Mens_St2:Array[0..6] of String=('Comando não executado',
                                'CNPJ do Proprietário não cadastrado',
                                'Cancelamento não permitido',
                                'Alíquota não programada',
                                'Erro de memória',
                                'Memória Fiscal cheia',
                                'Tipo de parâmetro de comando inválido');

var
  FormPrincipal: TFormPrincipal;
  Resposta: integer;
  Aliquotas_ICMS_ISS: array[1..30] of RegTaxaAliquota; //copia o conteudo da funcao ECF_RetornoAliquotas
  MeiosPagamento: array[1..16] of RegDescricaoFormasPagamento; //copia o conteudo da funcao
  Conteudo:Array[0..3020] of char; // Conteudo de retorno das funções de status
  virgula:integer;
  NaoFiscais:Array[1..16] of RegDescricaoNaoFiscal; // Legendas de Operações não fiscais
  RelatorioGer: array[1..28] of RegDescricaoRelatorio; // Nomes dos Relatorios Gerencias
  TotaisPagamento:Array[1..50] of RegTotaisFPagto; // Totais dos Meios de Pagamento
  cTributacoes:Array[1..20] of RegdecompoeAliquota;
  TotaisX:RegTotaisdaVenda;
  totaisNaoFiscais: Array[1..28] of RegTotaisNaofiscais;


implementation

uses declaracoes, cpf_cnpj, selecaodata, selecaoreducao, aumentadescricaoitem,
  UnidadeMedida, VendeItem, VendeItem3d, VendeItemd, funcoesapoio,
  Aberturadodia, DescontoSobreItemvendido, CancelaAcresDescIMFD,
  IniciaFechamentoCupom, IniciaFechamentoCupomMFD, FechaCupom,
  AtivaDesativacorteProximoMFD, EstornoFormasPagamento,
  Abrecomprovantenaofiscalvinculado, UsaComprovanteVinculadoTEF,
  ImprimeRespostaCartao, AbreRecebimentoNaoFiscal, RecebimentoNaoFiscal,
  RelatorioGErencial, ReducaoZ, Autenticacao, Cheque,
  IncluiCidadeFavorecido, ImprimeCheque, Retorno, StatusPRogramacao,
  UltimaTransacao, AcumuladoresDiarios, Contadores, StatusECF, Sintegra,
  StatusDiversos, StatusValoresaposRZ, DadosUltimaZ, Download, DadosMFD,
  CapturaDocumentos, TabelaMercadoriasServicos, ReproduzirMFMFD,
  GeraRegistroCAT52, ConfiguraCodigoBarras, CodigoBarras, FormSintegra2004,
  TotalizadoresparciaisMFD, NomeiaTotalizadorNaoICMS;

{$R *.dfm}

procedure TFormPrincipal.AbrePortaSerial1Click(Sender: TObject);
begin
        Resposta:=0;
        Statusbar1.Panels[0].Text:='Abre Porta Serial'; WaitProcess;

        Resposta:= ECF_AbrePortaSerial();
        VerificaRetornoFuncao(Resposta);

        Memo1.Lines.Add('Abrir Porta:'+inttostr(Resposta));
        Memo1.Lines.Add('');
end;

procedure TFormPrincipal.FechaPortaSerial1Click(Sender: TObject);
begin
        Resposta:=0;
        Statusbar1.Panels[0].Text:='Fecha Porta Serial'; WaitProcess;

        Resposta:= ECF_FechaPortaSerial();
        VerificaRetornoFuncao(Resposta);

        Memo1.Lines.Add('Fechar Porta:'+inttostr(Resposta));
        Memo1.Lines.Add('');
end;

procedure TFormPrincipal.Sair1Click(Sender: TObject);
begin
        Resposta:= ECF_FechaPortaSerial();
        Close;
end;

procedure TFormPrincipal.LeituraX1Click(Sender: TObject);
begin
        Statusbar1.Panels[0].Text:='Leitura X'; WaitProcess;

        Resposta:= ECF_LeituraX;
        VerificaRetornoFuncao(Resposta);

        Memo1.Lines.Add('Leitura X:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        Refresh;
end;

procedure TFormPrincipal.ReduoZ1Click(Sender: TObject);
begin
        Statusbar1.Panels[0].Text:='Redução Z'; WaitProcess;
        cdata:=#0; chora:=#0;
        FormReducaoZ.ShowModal;
        if not ((cdata=#0) and (chora=#0)) then Resposta:= ECF_ReducaoZ(cdata,chora);
        
        Memo1.Lines.Add('Redução Z:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        VerificaRetornoFuncao(Resposta);
        Refresh;

end;

// **********************************************************************
// -------------------- Verifica o retorno da função ---------------------


procedure TFormPrincipal.FormDestroy(Sender: TObject);
begin
        ECF_FechaPortaSerial();
end;

procedure TFormPrincipal.AbrirCupomFiscal1Click(Sender: TObject);
begin
        FormPrincipal.CPF_CNPJ:=#0;
        FormCPF.Height:=105;
        FormCPF.ShowModal;

        if not (CPF_CNPJ = #0) then begin
                Statusbar1.Panels[0].Text:='Abre Cupom'; WaitProcess;

                Resposta:=ECF_AbreCupom(CPF_CNPJ);

                Memo1.Lines.Add('Abre Cupom:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;
end;

procedure TFormPrincipal.Abre1Click(Sender: TObject);
begin
        FormPrincipal.CPF_CNPJ:=#0;
        FormCPF.Height:=170;
        FormCPF.ShowModal;

        if not (CPF_CNPJ = #0) then begin
                Statusbar1.Panels[0].Text:='Abre Cupom';WaitProcess;

                Resposta:=ECF_AbreCupomMFD(CPF_CNPJ,NomeConsumidor,EnderecoCOnsumidor);

                Memo1.Lines.Add('Abre Cupom:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;
end;

procedure TFormPrincipal.IdentificaConsumidor1Click(Sender: TObject);
begin
        FormCPF.Height:=170;
        FormCPF.ShowModal;

        Statusbar1.Panels[0].Text:='Identifica Consumidor'; WaitProcess;

        Resposta:=ECF_IdentificaConsumidor(NomeConsumidor,EnderecoCOnsumidor,CPF_CNPJ);

        Memo1.Lines.Add('Identifica Consumidor:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        VerificaRetornoFuncao(Resposta);
        Refresh;

end;

procedure TFormPrincipal.PorData1Click(Sender: TObject);
begin
        cdatai:=#0;cdataf:=#0;
        FormSelData.Height:=142;
        FormSelData.ShowModal;

        if not ((cDatai = #0) or (cDataf= #0)) then begin
                Statusbar1.Panels[0].Text:='LMF por Data'; WaitProcess;
                ECF_LeituraMemoriaFiscalData( cDatai,cDataf );

                Memo1.Lines.Add('Leitura da Memória Fiscal por Data:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.PorDataMFD1Click(Sender: TObject);
begin
        cdatai:=#0;cdataf:=#0;
        FormSelData.Height:=185;
        FormSelData.ShowModal;

        if not ((cDatai = #0) or (cDataf= #0)) then begin
                Statusbar1.Panels[0].Text:='LMF por Data MFD'; WaitProcess;
                ECF_LeituraMemoriaFiscalDataMFD( cDatai,cDataf, tipoLeitura );

                Memo1.Lines.Add('Leitura da Memória Fiscal por Data MFD:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;


end;

procedure TFormPrincipal.PorRedulo1Click(Sender: TObject);
begin
        cReducaoi:=#0;cReducaof:=#0;
        FormSelReducao.Height:=142;
        FormSelReducao.ShowModal;

        if not ((cReducaoi = #0) or (cReducaof= #0)) then begin
                Statusbar1.Panels[0].Text:='LMF por Reducao'; WaitProcess;
                ECF_LeituraMemoriaFiscalReducao( cReducaoi,cReducaof );

                Memo1.Lines.Add('Leitura da Memória Fiscal por Reducao:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;
end;

procedure TFormPrincipal.PorReduoMFD1Click(Sender: TObject);
begin
        cReducaoi:=#0;cReducaof:=#0;
        FormSelReducao.Height:=185;
        FormSelReducao.ShowModal;

        if not ((cReducaoi = #0) or (cReducaof= #0)) then begin
                Statusbar1.Panels[0].Text:='LMF por Reducao'; WaitProcess;
                ECF_LeituraMemoriaFiscalReducaoMFD( cReducaoi, cReducaof, tipoLeitura );

                Memo1.Lines.Add('Leitura da Memória Fiscal por Reducao:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;


end;

procedure TFormPrincipal.AumentaDescrioItem1Click(Sender: TObject);
begin
        FormAumentaDescricao.Caption:='Descricao Complementar';
        FormAumentaDescricao.ShowModal;

        Statusbar1.Panels[0].Text:='Aumenta Descricao Item'; WaitProcess;

        Resposta:=ECF_AumentaDescricaoItem(Descricao_Complementar);

        Memo1.Lines.Add('Aumenta Descrição Item:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        VerificaRetornoFuncao(Resposta);
        Refresh;
end;

procedure TFormPrincipal.UsaUnidadedeMedida1Click(Sender: TObject);
begin
        UnidadeMedida:=#0;
        FormUnidadeMedida.ShowModal;
        if not (UnidadeMedida = #0) then begin
                Statusbar1.Panels[0].Text:='Usa Unidade Medida'; WaitProcess;

                Resposta:=ECF_UsaUnidadeMedida(UnidadeMedida);

                Memo1.Lines.Add('Usa Unidade Medida:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.CancelaCupom2Click(Sender: TObject);
begin
        Statusbar1.Panels[0].Text:='Cancela Cupom'; WaitProcess;

        Resposta:=ECF_CancelaCupom;

        Memo1.Lines.Add('Cancela Cupom:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        VerificaRetornoFuncao(Resposta);
        Refresh;
end;

procedure TFormPrincipal.CancelaCupomMFD1Click(Sender: TObject);
begin
        FormPrincipal.CPF_CNPJ:=#0;
        FormCPF.Height:=170;
        FormCPF.Caption:='Cancela Cupom MFD';
        FormCPF.ShowModal;

        if not (CPF_CNPJ = #0) then begin
                Statusbar1.Panels[0].Text:='Cancela Cupom MFD'; WaitProcess;

                Resposta:=ECF_CancelaCupomMFD(CPF_CNPJ,NomeConsumidor,EnderecoCOnsumidor);

                Memo1.Lines.Add('Cancela Cupom MFD:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.VendeItem1Click(Sender: TObject);
begin
        FormPrincipal.CodigoItem:=#0;
        FormPrincipal.DescricaoItem:=#0;
        FormPrincipal.AliquotaItem:=#0;
        FormPrincipal.TipoQtdeItem:=#0;
        FormPrincipal.QtdeItem:=#0;
        FormPrincipal.DecimaisItem:=0;
        FormPrincipal.UnitarioItem:=#0;
        FormPrincipal.TipoDescontoItem:=#0;
        FormPrincipal.DescontoItem:=#0;
        FormVendeItem.ShowModal;

end;

procedure TFormPrincipal.VendeItem3decimais1Click(Sender: TObject);
begin
        FormPrincipal.CodigoItem:=#0;
        FormPrincipal.DescricaoItem:=#0;
        FormPrincipal.AliquotaItem:=#0;
        FormPrincipal.QtdeItem:=#0;
        FormPrincipal.UnitarioItem:=#0;
        FormPrincipal.TipoDescontoItem:=#0;
        FormPrincipal.TaxaItem:=#0;

        FormVendeItem3.ShowModal;

end;

procedure TFormPrincipal.VendeItemDepartamento1Click(Sender: TObject);
begin
        FormPrincipal.CodigoItem:=#0;
        FormPrincipal.DescricaoItem:=#0;
        FormPrincipal.AliquotaItem:=#0;
        FormPrincipal.QtdeItem:=#0;
        FormPrincipal.UnitarioItem:=#0;
        FormPrincipal.DescontoItem:=#0;
        FormPrincipal.AcrescimoItem:=#0;
        FormPrincipal.IndiceDepto:=#0;
        FormPrincipal.UnidadeMedida:=#0;

        FormVendeItemd.ShowModal;

end;

procedure TFormPrincipal.Aberturadodia1Click(Sender: TObject);
begin
        FormPrincipal.ValorInicioDia:=#0;
        FormPrincipal.PagtoInicioDia:=#0;

        FormAberturaDia.Height:=129;
        FormAberturaDia.Caption:='Abertura do Dia';
        FormAberturaDia.ShowModal;
        if not ((ValorInicioDia = #0) or (PagtoInicioDia = #0)) then begin
                Statusbar1.Panels[0].Text:='Abertura do dia'; WaitProcess;

                Resposta:=ECF_AberturaDoDia(ValorInicioDia, PagtoInicioDia);

                Memo1.Lines.Add('Abertura do Dia:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.DescontoSobreItemVendido1Click(Sender: TObject);
begin
        FormPrincipal.ItemDesc:=#0;
        FormPrincipal.DescontoItem:=#0;
        FormPrincipal.TipoDescontoItem:=#0;

        FormDescontoSobreItem.Caption:='Desconto Sobre Item Vendido';
        FormDescontoSobreItem.Height:=182;
        FormDescontoSobreItem.ShowModal;
        if not ((DescontoItem= #0) or (TipoDescontoItem = #0)) then begin
                Statusbar1.Panels[0].Text:='Desconto Sobre Item Vendido'; WaitProcess;

                Resposta:=ECF_DescontoSobreItemVendido(ItemDesc,TipoDescontoItem,DescontoItem);

                Memo1.Lines.Add('Desconto Sobre Item Vendido:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.AcrscimoDescontoItemMFD1Click(Sender: TObject);
begin
        FormPrincipal.ItemDesc:=#0;
        FormPrincipal.DescontoItem:=#0;
        FormPrincipal.TipoDescontoItem:=#0;
        FormPrincipal.TipoDescontoAcrescimo:=#0;

        FormDescontoSobreItem.Caption:='Desconto/Acréscimo Sobre Item Vendido';
        FormDescontoSobreItem.Height:=214;
        FormDescontoSobreItem.ShowModal;
        if not ((TipoDescontoAcrescimo= #0) or (DescontoItem= #0) or (TipoDescontoItem = #0)) then begin
                Statusbar1.Panels[0].Text:='Acréscimo Desconto Item MFD'; WaitProcess;

                Resposta:=ECF_AcrescimoDescontoItemMFD(ItemDesc,TipoDescontoAcrescimo,TipoDescontoItem,DescontoItem);

                Memo1.Lines.Add('Acrescimo Desconto Item MFD:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.CancelaItemAnterior1Click(Sender: TObject);
begin

        Statusbar1.Panels[0].Text:='Cancela Item Anterior'; WaitProcess;
        Resposta:=ECF_CancelaItemAnterior;

        Memo1.Lines.Add('Cancela Item Anterior:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        VerificaRetornoFuncao(Resposta);
        Refresh;
end;

procedure TFormPrincipal.CancelaItemGenrico1Click(Sender: TObject);
begin
        FormPrincipal.ItemDesc:=#0;

        FormDescontoSobreItem.Caption:='Cancela Item Genérico';
        FormDescontoSobreItem.Height:=88;
        FormDescontoSobreItem.ShowModal;
        if not (ItemDesc = #0) then begin
            Statusbar1.Panels[0].Text:='Cancela Item Genérico'; WaitProcess;

            Resposta:=ECF_CancelaItemGenerico(ItemDesc);

                Memo1.Lines.Add('Cancela Item Genérico:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.CancelaAcrscimoDescontoItemMFD1Click(
  Sender: TObject);
begin
        FormPrincipal.TipoDescontoAcrescimo:=#0;
        FormPrincipal.ItemDesc:=#0;
        FormCancelaAcresDescIMFD.Caption:='Cancela Acréscimo Desconto Item MFD';
        FormCancelaAcresDescIMFD.ShowModal;
        if not (( TipoDescontoAcrescimo= #0)or (ItemDesc=#0)) then begin
            Statusbar1.Panels[0].Text:='Cancela Acréscimo Desconto Item MFD'; WaitProcess;

            Resposta:=ECF_CancelaAcrescimoDescontoItemMFD(TipoDescontoAcrescimo,ItemDesc);
            Memo1.Lines.Add('Cancela Acréscimo Desconto Item MFD:'+inttostr(Resposta));
            Memo1.Lines.Add('');
            VerificaRetornoFuncao(Resposta);
            Refresh;
         end;
end;

procedure TFormPrincipal.IniciaFechamentodoCupom1Click(Sender: TObject);
begin
        FormPrincipal.DescontoItem:=#0;
        FormPrincipal.TipoDescontoItem:=#0;
        FormPrincipal.TipoDescontoAcrescimo:=#0;

        FormIniciaFechamentoCupom.Caption:='Inicia Fechamento do Cupom';
        FormIniciaFechamentoCupom.ShowModal;
        if not (( DescontoItem= #0) or (TipoDescontoItem=#0) or (TipoDescontoAcrescimo=#0)) then begin
            Statusbar1.Panels[0].Text:='Inicia Fechamento do Cupom'; WaitProcess;

            Resposta:=ECF_IniciaFechamentoCupom(TipoDescontoAcrescimo,TipoDescontoItem, DescontoItem);
            Memo1.Lines.Add('Inicia Fechamento do Cupom:'+inttostr(Resposta));
            Memo1.Lines.Add('');
            VerificaRetornoFuncao(Resposta);
            Refresh;
         end;

end;

procedure TFormPrincipal.IniciaFechamentoCupomMFD1Click(Sender: TObject);
begin
        FormPrincipal.DescontoItem:=#0;
        FormPrincipal.AcrescimoItem:=#0;
        FormPrincipal.TipoDescontoItem:=#0;
        FormPrincipal.TipoDescontoAcrescimo:=#0;

        FormIniciaFechamentoCupomMFD.Caption:='Inicia Fechamento Cupom MFD';
        FormIniciaFechamentoCupomMFD.ShowModal;
        if not (( DescontoItem= #0) or ( AcrescimoItem= #0) or
                (TipoDescontoItem=#0) or (TipoDescontoAcrescimo=#0)) then begin
            Statusbar1.Panels[0].Text:='Inicia Fechamento do Cupom MFD'; WaitProcess;

            Resposta:=ECF_IniciaFechamentoCupomMFD(TipoDescontoAcrescimo,TipoDescontoItem, AcrescimoItem, DescontoItem);
            Memo1.Lines.Add('Inicia Fechamento do Cupom MFD:'+inttostr(Resposta));
            Memo1.Lines.Add('');
            VerificaRetornoFuncao(Resposta);
            Refresh;
         end;
end;


procedure TFormPrincipal.AcrscimoouDescontoSubtotalMFD1Click(
  Sender: TObject);
begin
        FormPrincipal.DescontoItem:=#0;
        FormPrincipal.TipoDescontoItem:=#0;
        FormPrincipal.TipoDescontoAcrescimo:=#0;

        FormIniciaFechamentoCupom.Caption:='Acréscimo Desconto Subtotal MFD';
        FormIniciaFechamentoCupom.ShowModal;
        if not (( DescontoItem= #0) or (TipoDescontoItem=#0) or (TipoDescontoAcrescimo=#0)) then begin
            Statusbar1.Panels[0].Text:='Acréscimo Desconto Subtotal MFD'; WaitProcess;

            Resposta:=ECF_AcrescimoDescontoSubtotalMFD(TipoDescontoAcrescimo,TipoDescontoItem, DescontoItem);
            Memo1.Lines.Add('Acréscimo Desconto Subtotal MFD:'+inttostr(Resposta));
            Memo1.Lines.Add('');
            VerificaRetornoFuncao(Resposta);
            Refresh;
         end;


end;

procedure TFormPrincipal.CancelaAcrescimoDescontoSubtotalMFD1Click(
  Sender: TObject);
begin
        FormPrincipal.TipoDescontoAcrescimo:=#0;
        FormPrincipal.ItemDesc:=#0;
        FormCancelaAcresDescIMFD.Caption:='Cancela Acréscimo Desconto Subtotal MFD';
        FormCancelaAcresDescIMFD.ShowModal;
        if not (( TipoDescontoAcrescimo= #0)or (ItemDesc=#0)) then begin
            Statusbar1.Panels[0].Text:='Cancela Acréscimo Desconto Subtotal MFD'; WaitProcess;

            Resposta:=ECF_CancelaAcrescimoDescontoSubtotalMFD(TipoDescontoAcrescimo);
            Memo1.Lines.Add('Cancela Acréscimo Desconto Subtotal MFD:'+inttostr(Resposta));
            Memo1.Lines.Add('');
            VerificaRetornoFuncao(Resposta);
            Refresh;
         end;

end;

procedure TFormPrincipal.otalizaCupomMFD1Click(Sender: TObject);
begin
        Statusbar1.Panels[0].Text:='Totaliza Cupom MFD'; WaitProcess;

        Resposta:=ECF_TotalizaCupomMFD;

        Memo1.Lines.Add('Totaliza Cupom MFD:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        VerificaRetornoFuncao(Resposta);
        Refresh;

end;

procedure TFormPrincipal.EfetuaFormadePagamento1Click(Sender: TObject);
begin
        FormPrincipal.ValorInicioDia:=#0;
        FormPrincipal.PagtoInicioDia:=#0;

        FormAberturaDia.Height:=129;
        FormAberturaDia.Caption:='Efetua Forma de Pagamento';
        FormAberturaDia.ShowModal;
        if not ((ValorInicioDia = #0) or (PagtoInicioDia = #0)) then begin
                Statusbar1.Panels[0].Text:='Efetua Forma de Pagamento'; WaitProcess;

                Resposta:=ECF_EfetuaFormaPagamento(PagtoInicioDia,ValorInicioDia);

                Memo1.Lines.Add('Efetua Forma de Pagamento:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.EfetuaFormaPagamentoDescricaoForma1Click(
  Sender: TObject);
begin
        FormPrincipal.ValorInicioDia:=#0;
        FormPrincipal.PagtoInicioDia:=#0;
        FormPrincipal.TextoPagamento:=#0;

        FormAberturaDia.Height:=168;
        FormAberturaDia.Caption:='Efetua Forma de Pagamento Descricao Forma';
        FormAberturaDia.ShowModal;
        if not ((ValorInicioDia = #0) or (PagtoInicioDia = #0)) then begin
                Statusbar1.Panels[0].Text:='Efetua Forma de Pagamento'; WaitProcess;

                Resposta:=ECF_EfetuaFormaPagamentoDescricaoForma(PagtoInicioDia,ValorInicioDia,TextoPagamento);

                Memo1.Lines.Add('Efetua Forma de Pagamento Descricao:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.EfetuaFormaPagamentoMFD1Click(Sender: TObject);
begin
        FormPrincipal.ValorInicioDia:=#0;
        FormPrincipal.PagtoInicioDia:=#0;
        FormPrincipal.TextoPagamento:=#0;
        FormPrincipal.Parcelas:=#0;

        FormAberturaDia.Height:=211;
        FormAberturaDia.Caption:='Efetua Forma de Pagamento MFD';
        FormAberturaDia.ShowModal;
        if not ((ValorInicioDia = #0) or (PagtoInicioDia = #0)) then begin
                Statusbar1.Panels[0].Text:='Efetua Forma de Pagamento MFD'; WaitProcess;

                Resposta:=ECF_EfetuaFormaPagamentoMFD(PagtoInicioDia,ValorInicioDia,Parcelas,TextoPagamento);

                Memo1.Lines.Add('Efetua Forma de Pagamento MFD:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.erminaFechamentoCupom1Click(Sender: TObject);
begin
        FormAumentaDescricao.Caption:='Termina Fechamento Cupom';
        FormAumentaDescricao.ShowModal;

        Statusbar1.Panels[0].Text:='Terminal Fechamento Cupom'; WaitProcess;

        Resposta:=ECF_TerminaFechamentoCupom(Descricao_Complementar);

        Memo1.Lines.Add('Termina Fechamento Cupom:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        VerificaRetornoFuncao(Resposta);
        Refresh;

end;

procedure TFormPrincipal.FechaCupom1Click(Sender: TObject);
begin
        FormPrincipal.DescontoItem:=#0;
        FormPrincipal.TipoDescontoItem:=#0;
        FormPrincipal.TipoDescontoAcrescimo:=#0;

        FormPrincipal.ValorInicioDia:=#0;
        FormPrincipal.PagtoInicioDia:=#0;
        FormPrincipal.TextoPagamento:=#0;

        FormFechaCupom.Height:=386;
        FormFechaCupom.ShowModal;
        if not ((ValorInicioDia = #0) or (PagtoInicioDia = #0)) then begin
                Statusbar1.Panels[0].Text:='Fecha Cupom'; WaitProcess;

                Resposta:=ECF_FechaCupom(PagtoInicioDia,TipoDescontoAcrescimo, TipoDescontoItem, DescontoItem, ValorInicioDia, TextoPagamento);

                Memo1.Lines.Add('Fecha Cupom:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;


end;

procedure TFormPrincipal.FechaCupomResumido1Click(Sender: TObject);
begin
        FormPrincipal.PagtoInicioDia:=#0;
        FormPrincipal.TextoPagamento:=#0;

        FormFechaCupom.Height:=260;
        FormFechaCupom.ShowModal;
        if not (PagtoInicioDia = #0) then begin
                Statusbar1.Panels[0].Text:='Fecha Cupom'; WaitProcess;

                Resposta:=ECF_FechaCupomResumido(PagtoInicioDia,TextoPagamento);

                Memo1.Lines.Add('Fecha Cupom:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.AtivaDesativaCorteProximoMFD1Click(
  Sender: TObject);
begin
        Guilhotina:=-1;
        FormAtivaDesativaCorteProximoMFD.ShowModal;
        if not (Guilhotina = -1) then begin
                Statusbar1.Panels[0].Text:='Ativa Desativa Corte Proximo MFD'; WaitProcess;

                Resposta:=ECF_AtivaDesativaCorteProximoMFD(guilhotina);

                Memo1.Lines.Add('Ativa Desativa Corte Proximo MFD:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.CupomAdicionalMFD1Click(Sender: TObject);
begin
        Statusbar1.Panels[0].Text:='Cupom Adicional MFD'; WaitProcess;

        Resposta:=ECF_CupomAdicionalMFD;

        Memo1.Lines.Add('Cupom Adicional MFD:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        VerificaRetornoFuncao(Resposta);
        Refresh;

end;

procedure TFormPrincipal.ProgramaArredondaMENTO1Click(Sender: TObject);
begin
        Statusbar1.Panels[0].Text:='Programa Arredondamento'; WaitProcess;

        Resposta:=ECF_ProgramaArredondamento;

        Memo1.Lines.Add('Programa Arredondamento:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        VerificaRetornoFuncao(Resposta);
        Refresh;
end;

procedure TFormPrincipal.ProgramaTruncamento1Click(Sender: TObject);
begin
        Statusbar1.Panels[0].Text:='Programa Truncamento'; WaitProcess;

        Resposta:=ECF_ProgramaTruncamento;

        Memo1.Lines.Add('Programa Truncamento:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        VerificaRetornoFuncao(Resposta);
        Refresh;

end;

procedure TFormPrincipal.EstornodeFormasdePagamento1Click(Sender: TObject);
begin
        FormPrincipal.PagtoOrigem:=#0;
        FormPrincipal.PagtoDestino:=#0;
        FormPrincipal.ValorInicioDia:=#0;

        FormEstornoFormasPagamento.ShowModal;
        if not ((ValorInicioDia = #0) or (PagtoInicioDia = #0)) then begin
                Statusbar1.Panels[0].Text:='Estorno de Formas de Pagamento'; WaitProcess;

                Resposta:=ECF_EstornoFormasPagamento(PagtoOrigem, PagtoDestino,ValorInicioDia);

                Memo1.Lines.Add('Estorno de Formas de Pagamento:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;
end;

procedure TFormPrincipal.AbreComprovanteNoFiscalVinculado1Click(
  Sender: TObject);
begin
        FormPrincipal.PagtoTEF:=#0;
        FormPrincipal.ValorTEF:=#0;
        FormPrincipal.nCOO:=#0;
        FormPrincipal.CPF_CNPJ:=#0;
        FormPrincipal.NomeConsumidor:=#0;
        FormPrincipal.EnderecoCOnsumidor:=#0;

        FormAbreComprovanteNaoFiscalVinculado.Height:=141;
        FormAbreComprovanteNaoFiscalVinculado.ShowModal;
        if not ((ValorTEF = #0) or (PagtoTEF= #0)) then begin
                Statusbar1.Panels[0].Text:='Abre Comprovante Não Fiscal Vinculado'; WaitProcess;

                Resposta:=ECF_AbreComprovanteNaoFiscalVinculado(PagtoTEF, ValorTEF, nCOO);

                Memo1.Lines.Add('Abre Comprovante Não Fiscal Vinculado :'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;


end;

procedure TFormPrincipal.AbreComprovanteNoFiscalVinculadoMFD1Click(
  Sender: TObject);
begin
        FormPrincipal.PagtoTEF:=#0;
        FormPrincipal.ValorTEF:=#0;
        FormPrincipal.nCOO:=#0;
        FormPrincipal.CPF_CNPJ:=#0;
        FormPrincipal.NomeConsumidor:=#0;
        FormPrincipal.EnderecoCOnsumidor:=#0;

        FormAbreComprovanteNaoFiscalVinculado.Height:=250;
        FormAbreComprovanteNaoFiscalVinculado.ShowModal;
        if not ((ValorTEF = #0) or (PagtoTEF= #0)) then begin
                Statusbar1.Panels[0].Text:='Abre Comprovante Não Fiscal Vinculado MFD(TEF)'; WaitProcess;

                Resposta:=ECF_AbreComprovanteNaoFiscalVinculadoMFD(PagtoTEF, ValorTEF, nCOO, CPF_CNPJ, NomeConsumidor,EnderecoCOnsumidor);

                Memo1.Lines.Add('Abre Comprovante Não Fiscal Vinculado MFD (TEF):'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.UsaComprovanteNoFiscalVinculadoTEF1Click(
  Sender: TObject);
begin
        FormPrincipal.TextoPagamento:=#0;

        FormUsaComprovanteNaoFiscalVinculado.Caption:='Usa Comprovante Não Fiscal Vinculado';
        FormUsaCOmprovanteNaoFiscalVinculado.ShowModal;
        if not (TextoPagamento = #0) then begin
                Statusbar1.Panels[0].Text:='Usa Comprovante Não Fiscal Vinculado TEF'; WaitProcess;

                Resposta:=ECF_UsaComprovanteNaoFiscalVinculadoTEF(TextoPagamento);

                Memo1.Lines.Add('Usa Comprovante Não Fiscal Vinculado TEF:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;


end;

procedure TFormPrincipal.FechaComprovanteNoFiscalVinculado1Click(
  Sender: TObject);
begin
        Statusbar1.Panels[0].Text:='Fecha Comprovante Não Fiscal Vinculado'; WaitProcess;

        Resposta:=ECF_FechaComprovanteNaoFiscalVinculado;

        Memo1.Lines.Add('Fecha Comprovante Não Fiscal Vinculado:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        VerificaRetornoFuncao(Resposta);
        Refresh;

end;

procedure TFormPrincipal.SegundaViaNoFiscalVinculadoMFD1Click(
  Sender: TObject);
begin
        Statusbar1.Panels[0].Text:='Segunda Via Não Fiscal Vinculado MFD'; WaitProcess;

        Resposta:=ECF_SegundaViaNaoFiscalVinculadoMFD;

        Memo1.Lines.Add('Segunda Via Não Fiscal Vinculado MFD:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        VerificaRetornoFuncao(Resposta);
        Refresh;

end;

procedure TFormPrincipal.ReimpressoNoFiscalVinculadoMFD1Click(
  Sender: TObject);
begin
        Statusbar1.Panels[0].Text:='Reimpressão Não Fiscal Vinculado MFD'; WaitProcess;

        Resposta:=ECF_ReimpressaoNaoFiscalVinculadoMFD;

        Memo1.Lines.Add('Reimpressão Não Fiscal Vinculado MFD:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        VerificaRetornoFuncao(Resposta);
        Refresh;

end;

procedure TFormPrincipal.EstornoNoFiscalVinculadoMFD1Click(
  Sender: TObject);
begin
        FormCPF.Height:=170;
        FormCPF.ShowModal;

        Statusbar1.Panels[0].Text:='Estorno Não Fiscal Vinculado MFD'; WaitProcess;

        Resposta:=ECF_EstornoNaoFiscalVinculadoMFD(CPF_CNPJ,NomeConsumidor,EnderecoCOnsumidor);

        Memo1.Lines.Add('Estorno Não Fiscal Vinculado MFD:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        VerificaRetornoFuncao(Resposta);
        Refresh;

end;

procedure TFormPrincipal.ImprimirRespostaCartaoClick(Sender: TObject);
begin
        Statusbar1.Panels[0].Text:='TEF Imprimir Resposta Cartão'; WaitProcess;
        FormPrincipal.TextoPagamento:=#0;
        FormPrincipal.PagtoTEF:=#0;
        FormPrincipal.ValorTEF:=#0;

        FormImprimirRespostaCartao.Height:=420;
        FormImprimirRespostaCartao.ShowModal;
        if not ((ValorTEF = #0) or (PagtoTEF= #0) or (TextoPagamento=#0)) then begin
                Resposta:=ECF_TEF_ImprimirRespostaCartao(TextoPagamento,PagtoTEF,'0',ValorTef);

                Memo1.Lines.Add('TEF Imprimir Resposta Cartão:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.ImprimirResposta1Click(Sender: TObject);
begin

        Statusbar1.Panels[0].Text:='TEF Imprimir Resposta Cartão'; WaitProcess;
        FormPrincipal.TextoPagamento:=#0;
        FormPrincipal.PagtoTEF:=#0;
        FormPrincipal.ValorTEF:=#0;

        FormImprimirRespostaCartao.Height:=400;
        FormImprimirRespostaCartao.ShowModal;
        if not ((ValorTEF = #0) or (PagtoTEF= #0) or (TextoPagamento=#0)) then begin
                Resposta:=ECF_TEF_ImprimirRespostaCartao(TextoPagamento,PagtoTEF,'0',ValorTef);

                Memo1.Lines.Add('TEF Imprimir Resposta Cartão:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;
end;

procedure TFormPrincipal.FechaRelatrio1Click(Sender: TObject);
begin
        Statusbar1.Panels[0].Text:='TEF Fecha Relatório'; WaitProcess;

        Resposta:=ECF_TEF_FechaRelatorio;

        Memo1.Lines.Add('TEF Fecha Relatório:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        VerificaRetornoFuncao(Resposta);
        Refresh;

end;

procedure TFormPrincipal.RelatrioGerencialTEF1Click(Sender: TObject);
begin
        FormPrincipal.TextoPagamento:=#0;

        FormUsaComprovanteNaoFiscalVinculado.Caption:='Relatório Gerencial TEF';
        FormUsaCOmprovanteNaoFiscalVinculado.ShowModal;
        if not (TextoPagamento = #0) then begin
                Statusbar1.Panels[0].Text:='Relatório Gerencial TEF'; WaitProcess;

                Resposta:=ECF_RelatorioGerencialTEF(TextoPagamento);

                Memo1.Lines.Add('Relatório Gerencial TEF:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.UsaRelatorioGerencialMFDTEF1Click(
  Sender: TObject);
begin
        FormPrincipal.TextoPagamento:=#0;

        FormUsaComprovanteNaoFiscalVinculado.Caption:='Usa Relatório Gerencial MFD TEF';
        FormUsaCOmprovanteNaoFiscalVinculado.ShowModal;
        if not (TextoPagamento = #0) then begin
                Statusbar1.Panels[0].Text:='Usa Relatório Gerencial MFD TEF'; WaitProcess;

                Resposta:=ECF_UsaRelatorioGerencialMFDTEF(TextoPagamento);

                Memo1.Lines.Add('Usa Relatório Gerencial MFD TEF:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;


end;

procedure TFormPrincipal.Suprimento1Click(Sender: TObject);
begin
        FormPrincipal.ValorInicioDia:=#0;
        FormPrincipal.PagtoInicioDia:=#0;

        FormAberturaDia.Height:=129;
        FormAberturaDia.Caption:='Suprimento';
        FormAberturaDia.ShowModal;
        if not ((ValorInicioDia = #0) or (PagtoInicioDia = #0)) then begin
                Statusbar1.Panels[0].Text:='Suprimento'; WaitProcess;

                Resposta:=ECF_Suprimento(ValorInicioDia, PagtoInicioDia);

                Memo1.Lines.Add('Suprimento:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;
end;

procedure TFormPrincipal.Sangria1Click(Sender: TObject);
begin
        FormPrincipal.ValorInicioDia:=#0;

        FormAberturaDia.Height:=78;
        FormAberturaDia.Caption:='Sangria';
        FormAberturaDia.ShowModal;
        if not (ValorInicioDia = #0) then begin
                Statusbar1.Panels[0].Text:='Sangria'; WaitProcess;

                Resposta:=ECF_Sangria(ValorInicioDia);

                Memo1.Lines.Add('Sangria:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;


end;

procedure TFormPrincipal.AbreRecebimentoNoFiscalMFD1Click(Sender: TObject);
begin
        FormCPF.Height:=170;
        FormCPF.ShowModal;

        Statusbar1.Panels[0].Text:='Abre Recebimento Não Fiscal MFD'; WaitProcess;

        Resposta:=ECF_AbreRecebimentoNaoFiscalMFD(CPF_CNPJ,NomeConsumidor,EnderecoCOnsumidor);

        Memo1.Lines.Add('Abre Recebimento Não Fiscal MFD:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        VerificaRetornoFuncao(Resposta);
        Refresh;

end;

procedure TFormPrincipal.AbreRecebimentoNoFiscal1Click(Sender: TObject);
begin
        FormPrincipal.ValorInicioDia:=#0;
        FormPrincipal.ItemDesc:=#0;
        FormPrincipal.DescontoItem:=#0;
        FormPrincipal.TipoDescontoItem:=#0;
        FormPrincipal.TipoDescontoAcrescimo:=#0;

        FormAbreRecebimentoNaoFiscal.ShowModal;
        if not ((ValorInicioDia = #0) or (ItemDesc = #0) or
                (DescontoItem = #0) or (TipoDescontoItem = #0) or (TipoDescontoAcrescimo = #0)) then begin
                Statusbar1.Panels[0].Text:='Abre Recebimento Não Fiscal'; WaitProcess;

                Resposta:=ECF_AbreRecebimentoNaoFiscal(ItemDesc,TipoDescontoAcrescimo,TipoDescontoItem, DescontoItem,ValorInicioDia,'');

                Memo1.Lines.Add('Abre Recebimento Não Fiscal:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.RecebimentoNoFiscal1Click(Sender: TObject);
begin
        FormPrincipal.ValorInicioDia:=#0;
        FormPrincipal.PagtoInicioDia:=#0;
        FormPrincipal.Parcelas:=#0;

        FormRecebimentoNaoFiscal.Height:=178;
        FormRecebimentoNaoFiscal.Caption:='Recebimento Não Fiscal';
        FormRecebimentoNaoFiscal.ShowModal;
        if not ((ValorInicioDia = #0) or (PagtoInicioDia = #0) or (Parcelas = #0)) then begin
                Statusbar1.Panels[0].Text:='Recebimento Não Fiscal'; WaitProcess;

                Resposta:=ECF_RecebimentoNaoFiscal(Parcelas, ValorInicioDia, PagtoInicioDia);

                Memo1.Lines.Add('RecebimentoNaoFiscal:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;


procedure TFormPrincipal.EfetuaRecebimentoNaoFiscalMFD1Click(
  Sender: TObject);
begin
        FormPrincipal.ValorInicioDia:=#0;
        FormPrincipal.PagtoInicioDia:=#0;
        FormPrincipal.Parcelas:=#0;

        FormRecebimentoNaoFiscal.Height:=126;
        FormRecebimentoNaoFiscal.Caption:='Efetua Recebimento Não Fiscal MFD';
        FormRecebimentoNaoFiscal.ShowModal;
        if not ((ValorInicioDia = #0) or (PagtoInicioDia = #0) or (Parcelas = #0)) then begin
                Statusbar1.Panels[0].Text:='Efetua Recebimento Não Fiscal MFD'; WaitProcess;

                Resposta:=ECF_EfetuaRecebimentoNaoFiscalMFD(Parcelas, ValorInicioDia);

                Memo1.Lines.Add('Efetua RecebimentoNaoFiscal MFD:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.CancelaItemNoFiscalMFD1Click(Sender: TObject);
begin
        FormPrincipal.ItemDesc:=#0;

        FormDescontoSobreItem.Height:=88;
        FormDescontoSobreItem.ShowModal;
        if not (ItemDesc = #0) then begin
            Statusbar1.Panels[0].Text:='Cancela Item Não Fiscal MFD'; WaitProcess;

            Resposta:=ECF_CancelaItemNaoFiscalMFD(ItemDesc);

                Memo1.Lines.Add('Cancela Item Não Fiscal MFD:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.AcrscimoDescontoItemNoFiscalMFD1Click(
  Sender: TObject);
begin
        FormPrincipal.ItemDesc:=#0;
        FormPrincipal.DescontoItem:=#0;
        FormPrincipal.TipoDescontoItem:=#0;
        FormPrincipal.TipoDescontoAcrescimo:=#0;

        FormDescontoSobreItem.Caption:='Acréscimo Desconto Item Não Fiscal MFD';
        FormDescontoSobreItem.Height:=214;
        FormDescontoSobreItem.ShowModal;
        if not ((TipoDescontoAcrescimo= #0) or (DescontoItem= #0) or (TipoDescontoItem = #0)) then begin
                Statusbar1.Panels[0].Text:='Acréscimo Item Não Fiscal MFD'; WaitProcess;

                Resposta:=ECF_AcrescimoItemNaoFiscalMFD(ItemDesc,TipoDescontoAcrescimo,TipoDescontoItem,DescontoItem);

                Memo1.Lines.Add('Acrescimo Item Não Fiscal MFD:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.AcrscimoDescontoSubtotalRecebimentoMFD1Click(
  Sender: TObject);
begin
        FormPrincipal.DescontoItem:=#0;
        FormPrincipal.TipoDescontoItem:=#0;
        FormPrincipal.TipoDescontoAcrescimo:=#0;

        FormIniciaFechamentoCupom.Caption:='Acréscimo Desconto Subtotal Recebimento MFD';
        FormIniciaFechamentoCupom.ShowModal;
        if not (( DescontoItem= #0) or (TipoDescontoItem=#0) or (TipoDescontoAcrescimo=#0)) then begin
            Statusbar1.Panels[0].Text:='Acréscimo Desconto Subtotal MFD'; WaitProcess;

            Resposta:=ECF_AcrescimoDescontoSubtotalRecebimentoMFD(TipoDescontoAcrescimo,TipoDescontoItem, DescontoItem);
            Memo1.Lines.Add('Acréscimo Desconto Subtotal Recebimento MFD:'+inttostr(Resposta));
            Memo1.Lines.Add('');
            VerificaRetornoFuncao(Resposta);
            Refresh;
         end;


end;

procedure TFormPrincipal.otalizaRecebimentoMFD1Click(Sender: TObject);
begin
        Statusbar1.Panels[0].Text:='Totaliza Recebimento MFD'; WaitProcess;

        Resposta:=ECF_TotalizaRecebimentoMFD;

        Memo1.Lines.Add('Totaliza Recebimento MFD:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        VerificaRetornoFuncao(Resposta);
        Refresh;

end;

procedure TFormPrincipal.IniciaFechamentoRecebimentoNoFiscalMFD1Click(
  Sender: TObject);
begin
        FormPrincipal.DescontoItem:=#0;
        FormPrincipal.AcrescimoItem:=#0;
        FormPrincipal.TipoDescontoItem:=#0;
        FormPrincipal.TipoDescontoAcrescimo:=#0;

        FormIniciaFechamentoCupomMFD.Caption:='Inicia Fechamento Recebimento Não Fiscal MFD';
        FormIniciaFechamentoCupomMFD.ShowModal;
        if not (( DescontoItem= #0) or ( AcrescimoItem= #0) or
                (TipoDescontoItem=#0) or (TipoDescontoAcrescimo=#0)) then begin
            Statusbar1.Panels[0].Text:='Inicia Fechamento Recebimento Não Fiscal MFD'; WaitProcess;

            Resposta:=ECF_IniciaFechamentoRecebimentoNaoFiscalMFD(TipoDescontoAcrescimo,TipoDescontoItem, AcrescimoItem, DescontoItem);
            Memo1.Lines.Add('Inicia Fechamento Recebimento Não Fiscal MFD:'+inttostr(Resposta));
            Memo1.Lines.Add('');
            VerificaRetornoFuncao(Resposta);
            Refresh;
         end;

end;

procedure TFormPrincipal.FechaRecebimentoNoFiscalMFD1Click(
  Sender: TObject);
begin
        FormAumentaDescricao.Caption:='Fecha Recebimento Não Fiscal MFD';
        FormAumentaDescricao.ShowModal;

        Statusbar1.Panels[0].Text:='Fecha Recebimento Não Fiscal MFD'; WaitProcess;

        Resposta:=ECF_FechaRecebimentoNaoFiscalMFD(Descricao_Complementar);

        Memo1.Lines.Add('Fecha Recebimento Não Fiscal MFD:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        VerificaRetornoFuncao(Resposta);
        Refresh;

end;

procedure TFormPrincipal.CancelaRecebimentoNoFiscalMFD1Click(
  Sender: TObject);
begin
        FormPrincipal.CPF_CNPJ:=#0;
        FormCPF.Height:=170;
        FormCPF.Caption:='Cancela Recebimento Não Fiscal MFD';
        FormCPF.ShowModal;

        if not (CPF_CNPJ = #0) then begin
                Statusbar1.Panels[0].Text:='Cancela Recebimento Nao Fiscal MFD'; WaitProcess;

                Resposta:=ECF_CancelaRecebimentoNaoFiscalMFD(CPF_CNPJ,NomeConsumidor,EnderecoCOnsumidor);

                Memo1.Lines.Add('Cancela Recebimento Não Fiscal MFD:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.EfetuaFormaPagamentoNoFiscal1Click(
  Sender: TObject);
begin
        FormPrincipal.ValorInicioDia:=#0;
        FormPrincipal.PagtoInicioDia:=#0;
        FormPrincipal.TextoPagamento:=#0;

        FormAberturaDia.Height:=168;
        FormAberturaDia.Caption:='Efetua Forma de Pagamento Não Fiscal';
        FormAberturaDia.ShowModal;
        if not ((ValorInicioDia = #0) or (PagtoInicioDia = #0)) then begin
                Statusbar1.Panels[0].Text:='Efetua Forma de Pagamento Não Fiscal'; WaitProcess;

                Resposta:=ECF_EfetuaFormaPagamentoDescricaoForma(PagtoInicioDia,ValorInicioDia,TextoPagamento);

                Memo1.Lines.Add('Efetua Forma de Pagamento Não Fiscal:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;


end;

procedure TFormPrincipal.AbreRelatrioGerencial1Click(Sender: TObject);
begin
        Statusbar1.Panels[0].Text:='Abre Relatório Gerencial'; WaitProcess;

        Resposta:= ECF_AbreRelatorioGerencial;
        VerificaRetornoFuncao(Resposta);

        Memo1.Lines.Add('Abre Relatorio Gerencial:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        Refresh;

end;

procedure TFormPrincipal.AbreRelatrioGerencialMFD1Click(Sender: TObject);
begin
        FormPrincipal.IndiceRelatorio:=#0;
        FormRelatorioGerencial.ShowModal;
        if not (IndiceRelatorio = #0) then begin
                Statusbar1.Panels[0].Text:='Abre Relatorio Gerencial MFD'; WaitProcess;

                Resposta:=ECF_AbreRelatorioGerencialMFD(IndiceRelatorio);

                Memo1.Lines.Add('Abre Relatorio Gerencial:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.EnviaTextoCNF1Click(Sender: TObject);
begin
        FormPrincipal.TextoPagamento:=#0;

        FormUsaComprovanteNaoFiscalVinculado.Caption:='Enviar Texto CNF';
        FormUsaCOmprovanteNaoFiscalVinculado.ShowModal;
        if not (TextoPagamento = #0) then begin
                Statusbar1.Panels[0].Text:='Enviar Texto CNF'; WaitProcess;

                Resposta:=ECF_EnviarTextoCNF(TextoPagamento);

                Memo1.Lines.Add('EnviarTextoCNF:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.RelatorioGerencial1Click(Sender: TObject);
begin
        FormPrincipal.TextoPagamento:=#0;

        FormUsaComprovanteNaoFiscalVinculado.Caption:='Relatório Gerencial';
        FormUsaCOmprovanteNaoFiscalVinculado.ShowModal;
        if not (TextoPagamento = #0) then begin
                Statusbar1.Panels[0].Text:='Relatorio Gerencial'; WaitProcess;

                Resposta:=ECF_RelatorioGerencial(TextoPagamento);

                Memo1.Lines.Add('Relatorio Gerencial:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.UsaRelatrioGerencialMFD1Click(Sender: TObject);
begin
        FormPrincipal.TextoPagamento:=#0;

        FormUsaComprovanteNaoFiscalVinculado.Caption:='Usa Relatório Gerencial MFD';
        FormUsaCOmprovanteNaoFiscalVinculado.ShowModal;
        if not (TextoPagamento = #0) then begin
                Statusbar1.Panels[0].Text:='Usa Relatorio Gerencial MFD'; WaitProcess;

                Resposta:=ECF_UsaRelatorioGerencialMFD(TextoPagamento);

                Memo1.Lines.Add('Usa Relatório Gerencial MFD:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;


end;

procedure TFormPrincipal.FechaRelatrioGerencial1Click(Sender: TObject);
begin
        Statusbar1.Panels[0].Text:='Fecha Relatório Gerencial'; WaitProcess;

        Resposta:= ECF_FechaRelatorioGerencial;
        VerificaRetornoFuncao(Resposta);

        Memo1.Lines.Add('Fecha Relatório Gerencial:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        Refresh;

end;

procedure TFormPrincipal.FechaRelatrioXouZ1Click(Sender: TObject);
begin
        Statusbar1.Panels[0].Text:='Fecha Relatório X ou Z'; WaitProcess;

        Resposta:= ECF_FechaRelatorioXouZ;
        VerificaRetornoFuncao(Resposta);

        Memo1.Lines.Add('Fecha Relatório X ou Z:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        Refresh;


end;

procedure TFormPrincipal.FechamentodoDia1Click(Sender: TObject);
begin
        if MessageDlg('Confirma Fechamento do Dia ? Esta função emitirá um Redução Z e poderá bloquear o ECF.',
        mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
                Statusbar1.Panels[0].Text:='Fechamento do Dia'; WaitProcess;
                Resposta:= ECF_FechamentoDoDia;
                VerificaRetornoFuncao(Resposta);

                Memo1.Lines.Add('Fechamento do Dia:'+inttostr(Resposta));
                Memo1.Lines.Add('');
                Refresh;
        end;

end;

procedure TFormPrincipal.Autenticao2Click(Sender: TObject);
begin
        Statusbar1.Panels[0].Text:='Autenticação'; WaitProcess;

        Resposta:= ECF_Autenticacao;
        VerificaRetornoFuncao(Resposta);

        Memo1.Lines.Add('Autenticação:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        Refresh;

end;

procedure TFormPrincipal.AutenticaoMFD1Click(Sender: TObject);
begin
        FormPrincipal.TextoPagamento:=#0;

        FormAutenticacao.ShowModal;
        if not (TextoPagamento = #0) then begin
                Statusbar1.Panels[0].Text:='Autenticação MFD'; WaitProcess;

                Resposta:=ECF_AutenticacaoMFD('01',TextoPagamento); // primeiro parametro sempre 01, ignorado no ECF Sweda

                Memo1.Lines.Add('Autenticacao MFD:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;


end;

procedure TFormPrincipal.AutenticaoSTR1Click(Sender: TObject);
begin
        FormPrincipal.TextoPagamento:=#0;

        FormAutenticacao.ShowModal;
        if not (TextoPagamento = #0) then begin
                Statusbar1.Panels[0].Text:='Autenticação STR'; WaitProcess;

                Resposta:=ECF_AutenticacaoStr(TextoPagamento); // primeiro parametro sempre 01, ignorado no ECF Sweda

                Memo1.Lines.Add('Autenticacao STR:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.VerificaDocAutenticao1Click(Sender: TObject);
begin
        Statusbar1.Panels[0].Text:='Verifica Doc Autenticação'; WaitProcess;

        Resposta:= ECF_VerificaDocAutenticacao;
        VerificaRetornoFuncao(Resposta);
//        case resposta of
//        0: ShowMessage('Documento não está presente.');
//        1: ShowMessage('Documento posicionado ou autenticado.');
//        -1: ShowMessage('Autenticação cancelada.');
//        -30: ShowMessage('ECF não possui mecanismo de autenticação.');
//        end;

        Memo1.Lines.Add('Verifica Doc Autenticação:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        Refresh;

end;

procedure TFormPrincipal.AcionaGaveta1Click(Sender: TObject);
begin
        Statusbar1.Panels[0].Text:='Aciona Gaveta'; WaitProcess;

        Resposta:= ECF_AcionaGaveta;
        VerificaRetornoFuncao(Resposta);

        Memo1.Lines.Add('Aciona Gaveta:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        Refresh;


end;

procedure TFormPrincipal.VerificaEstadoGaveta1Click(Sender: TObject);
var EstadoGaveta:Integer;
begin
        Statusbar1.Panels[0].Text:='Verifica Estado Gaveta'; WaitProcess;

        Resposta:= ECF_VerificaEstadoGaveta(EstadoGaveta);
        VerificaRetornoFuncao(Resposta);
        if (EstadoGaveta=1) Then ShowMessage('Gaveta fechada.')
        else if EstadoGaveta = 0 then ShowMessage('Gaveta aberta.');
        Memo1.Lines.Add('Verifica Estado Gaveta:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        Refresh;


end;

procedure TFormPrincipal.VerificaEstadoGavetaStr1Click(Sender: TObject);
var EstadoGavetaStr:String;
begin
        Statusbar1.Panels[0].Text:='Verifica Estado Gaveta Str'; WaitProcess;

        Resposta:= ECF_VerificaEstadoGavetaStr(EstadoGavetaStr);
        VerificaRetornoFuncao(Resposta);
        if (EstadoGavetaStr='001') Then ShowMessage('Gaveta fechada.')
        else if EstadoGavetaStr = '000' then ShowMessage('Gaveta aberta.');
        Memo1.Lines.Add('Verifica Estado Gaveta Str:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        Refresh;

end;

procedure TFormPrincipal.ProgramaMoedaSingular1Click(Sender: TObject);
begin
        FormPrincipal.NomeMoeda:=#0;
        FormCheque.Caption:='Programa Moeda Singular';
        FormCheque.ShowModal;

        if not (NomeMoeda = #0) then begin
                Statusbar1.Panels[0].Text:='Programa Moeda Singular'; WaitProcess;

                Resposta:=ECF_ProgramaMoedaSingular(NomeMoeda);

                Memo1.Lines.Add('Programa Moeda Singular:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.ProgramaMoedaPlural1Click(Sender: TObject);
begin
        FormPrincipal.NomeMoeda:=#0;
        FormCheque.Caption:='Programa Moeda Plural';
        FormCheque.ShowModal;

        if not (NomeMoeda = #0) then begin
                Statusbar1.Panels[0].Text:='Programa Moeda Plural'; WaitProcess;

                Resposta:=ECF_ProgramaMoedaPlural(NomeMoeda);

                Memo1.Lines.Add('Programa Moeda Plural:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;
end;

procedure TFormPrincipal.IncluiCidadeFavorecido1Click(Sender: TObject);
begin
        Cidade:=#0; Favorecido:=#0;
        FormCidadeFavorecido.ShowModal;

        if not ((Cidade= #0) or (favorecido = #0) )then begin
                Statusbar1.Panels[0].Text:='Inclui Cidade Favorecido'; WaitProcess;

                Resposta:=ECF_IncluiCidadeFavorecido(Cidade, Favorecido);

                Memo1.Lines.Add('Inclui Cidade Favorecido:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.VerificaStatusCheque1Click(Sender: TObject);
var EstadoCheque:Integer;
begin
        Statusbar1.Panels[0].Text:='Verifica Estado Cheque'; WaitProcess;

        Resposta:= ECF_VerificaStatusCheque(EstadoCheque);
        VerificaRetornoFuncao(Resposta);
        if (EstadoCheque=1) Then ShowMessage('Impressora Ok')
        else if (EstadoCheque=2) Then ShowMessage('Cheque em impressão.')
        else if (EstadoCheque=3) Then ShowMessage('Cheque posicionado.')
        else if (EstadoCheque=4) Then ShowMessage('Aguardando posicionamento do cheque.');
        Memo1.Lines.Add('Verifica Estado Cheque:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        Refresh;



end;

procedure TFormPrincipal.VerificaStatusChequeSTR1Click(Sender: TObject);
var EstadoChequeStr:String;
begin
        Statusbar1.Panels[0].Text:='Verifica Status Cheque Str'; WaitProcess;

        Resposta:= ECF_VerificaStatusChequeStr(EstadoChequeStr);
        VerificaRetornoFuncao(Resposta);
        if (EstadoChequeSTR='001') Then ShowMessage('Impressora Ok')
        else if (EstadoChequeStr='002') Then ShowMessage('Cheque em impressão.')
        else if (EstadoChequeStr='003') Then ShowMessage('Cheque posicionado.')
        else if (EstadoChequeStr='004') Then ShowMessage('Aguardando posicionamento do cheque.');
        Memo1.Lines.Add('Verifica Status Cheque Str:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        Refresh;
end;

procedure TFormPrincipal.ImprimeCheque1Click(Sender: TObject);
begin
        Cidade:=#0; Favorecido:=#0; Banco:=#0; cData:=#0;
        ValorInicioDia:=#0; TextoPagamento:=#0;
        FormImprimeCheque.GroupBox1.Visible:=False;
        FormImprimeCheque.ShowModal;

        if not ((Cidade= #0) or (favorecido = #0) or (banco = #0) or
                (ValorIniciodia=#0) or (cData=#0))then begin
                Statusbar1.Panels[0].Text:='Imprime Cheque'; WaitProcess;

                Resposta:=ECF_ImprimeCheque(Banco,ValorInicioDia,Favorecido, Cidade, cData, TextoPagamento);

                Memo1.Lines.Add('Imprime Cheque:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.ImprimeChequeMFD1Click(Sender: TObject);
begin
        Cidade:=#0; Favorecido:=#0; Banco:=#0; cData:=#0;
        ValorInicioDia:=#0; TextoPagamento:=#0; Verso:=#0;
        FormImprimeCheque.GroupBox1.Visible:=True;
        FormImprimeCheque.ShowModal;

        if not ((Cidade= #0) or (favorecido = #0) or (banco = #0) or
                (ValorIniciodia=#0) or (cData=#0))then begin
                Statusbar1.Panels[0].Text:='Imprime Cheque MFD'; WaitProcess;

                Resposta:=ECF_ImprimeChequeMFD(Banco,ValorInicioDia,Favorecido, Cidade, cData, TextoPagamento, verso);

                Memo1.Lines.Add('Imprime Cheque MFD:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.ImprimeCpiaCheque1Click(Sender: TObject);
begin
        Statusbar1.Panels[0].Text:='Imprime Cópia Cheque'; WaitProcess;

        Resposta:= ECF_ImprimeCopiaCheque;
        VerificaRetornoFuncao(Resposta);
        Memo1.Lines.Add('Imprime Cópia Cheque:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        Refresh;

end;

procedure TFormPrincipal.CancelaImpressoCheque1Click(Sender: TObject);
begin
        Statusbar1.Panels[0].Text:='Cancela Impressão Cheque'; WaitProcess;

        Resposta:= ECF_CancelaImpressaoCheque;
        VerificaRetornoFuncao(Resposta);
        Memo1.Lines.Add('Cancela Impressão Cheque:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        Refresh;

end;

procedure TFormPrincipal.LeituraChequeMFD1Click(Sender: TObject);
var cCMC7:String;
var i: integer;
begin
        cCMC7:=#0;
        Statusbar1.Panels[0].Text:='Leitura Cheque MFD'; WaitProcess;

        for i := 1 to 36 do cCMC7 := cCMC7 + ' ';
        Resposta:= ECF_LeituraChequeMFD(cCMC7);
        VerificaRetornoFuncao(Resposta);
        if not( cCMC7=#0) then ShowMessage(cCMC7);

        Memo1.Lines.Add('Leitura Cheque MFD:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        Refresh;
end;

procedure TFormPrincipal.LeituraLayoutsCheque1Click(Sender: TObject);
begin
        Statusbar1.Panels[0].Text:='Leitura Leiautes Cheques'; WaitProcess;

        Resposta:= ECF_LeituraLeiautesCheques;
        VerificaRetornoFuncao(Resposta);
        Memo1.Lines.Add('Leitura Leiautes Cheques:'+inttostr(Resposta));
        Memo1.Lines.Add('');
        Refresh;

        if Resposta = 1 then
                if MessageDlg('Deseja abrir o arquivo Retorno.TXT?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
                      FormPrincipal.OpenDialog1.FileName:='RETORNO.TXT' ;
                      OpenDialog1.Execute;
                      FormRetorno.Caption:=OpenDialog1.FileName;
                      FormRetorno.RichEdit1.Lines.LoadFromFile(OpenDialog1.FileName);
                      FormRetorno.Show;
                end;

end;

procedure TFormPrincipal.Programao1Click(Sender: TObject);
var
    i:integer;
    cTipo, cVersao, cSerie,cMarca, cModelo, cTipoi, cCGC, cIE, cIM:String;
    cProprietarios, cSimboloMoeda, cLoja, cCaixa, cData, cHora: String;
    cAliquotas: Array[0..300] of char;
    cCliche: Array[0..420] of char;
    cModoOperacao, cUnit, cQtde,cTrunca: String;
begin
        // TIPO DO ECF ----------------------------------------------------------
        cTipo:=#0; resposta:=0; Setlength(ctipo,2);
        FormPrincipal.Statusbar1.Panels[0].Text:='Retorna Tipo ECF'; WaitProcess;
        Resposta:= ECF_RetornaTipoEcf(cTipo);
        if Resposta=1 then
        begin
                if ctipo[1]='0' then FormStatusProgramacao.Label1.Caption:='Mecanismo Matricial'
                else FormStatusProgramacao.Label1.Caption:='Mecanismo Térmico (MFD)'
        end;
        Memo1.Lines.Add('Retorna Tipo ECF:'+inttostr(Resposta));

        // VERSÃO DA DLL ----------------------------------------------------------
        cVersao:=#0; resposta:=0; Setlength(cversao,10);
        FormPrincipal.Statusbar1.Panels[0].Text:='Versão da DLL'; WaitProcess;
        Resposta:= ECF_VersaoDll(cVersao);
        if Resposta=1 then FormStatusProgramacao.Label2.Caption:=cVersao;
        Memo1.Lines.Add('Versão da DLL:'+inttostr(Resposta));

        // VERSÃO FIRMWARE ----------------------------------------------------------
        cVersao:=#0; resposta:=0; Setlength(cversao,4);
        FormPrincipal.Statusbar1.Panels[0].Text:='Versão Firmware'; WaitProcess;
        Resposta:= ECF_VersaoFirmware(cVersao);
        if Resposta=1 then FormStatusProgramacao.Label3.Caption:=cVersao;
        Memo1.Lines.Add('Versão da Firmware:'+inttostr(Resposta));

        // NÚMERO SÉRIE ----------------------------------------------------------
        cSerie:=#0; resposta:=0; Setlength(cSErie,20);
        FormPrincipal.Statusbar1.Panels[0].Text:='Número de Série'; WaitProcess;
        Resposta:= ECF_NumeroSerieMFD(cSerie);
        if Resposta=1 then FormStatusProgramacao.Label4.Caption:=cSerie;
        Memo1.Lines.Add('Número de Série:'+inttostr(Resposta));

        // NÚMERO MFD ----------------------------------------------------------
        cSerie:=#0; resposta:=0; Setlength(cSerie,20);
        FormPrincipal.Statusbar1.Panels[0].Text:='Número da MFD'; WaitProcess;
        Resposta:= ECF_NumeroSerieMemoriaMFD(cSerie);
        if Resposta=1 then FormStatusProgramacao.Label5.Caption:=cSerie;
        Memo1.Lines.Add('Número da MFD:'+inttostr(Resposta));

        // Marca Modelo Tipo ----------------------------------------------------------
        cMarca:=#0;cModelo:=#0; cTipoi:=#0; resposta:=0;
        Setlength(cmarca,15);Setlength(cmodelo,20); Setlength(ctipoi,7);
        FormPrincipal.Statusbar1.Panels[0].Text:='Marca Modelo Tipo Impressora MFD'; WaitProcess;
        Resposta:= ECF_MarcaModeloTipoImpressoraMFD(cMarca, cModelo, cTipoi);
        if Resposta=1 then begin
                FormStatusProgramacao.Label6.Caption:=cMarca;
                FormStatusProgramacao.Label7.Caption:=cModelo;
                FormStatusProgramacao.Label8.Caption:=cTipoi;
        end;
        Memo1.Lines.Add('Marca Modelo Tipo Impressora MFD:'+inttostr(Resposta));

        resposta:=0;
        if cTipo[1] = '0' then begin  //matricial
                // CGC e IE  ----------------------------------------------------------
                FOrmStatusProgramacao.GroupBox9.Caption:='CGC';
                FOrmStatusProgramacao.GroupBox10.Caption:='IE';
                cCGC:=#0;cIE:=#0; Setlength(cCGC,20);Setlength(cIE,18);
                FormPrincipal.Statusbar1.Panels[0].Text:='CGC e IE'; WaitProcess;
                Resposta:= ECF_CGC_IE(cCGC, cIE);
                if Resposta=1 then begin
                        FormStatusProgramacao.Label9.Caption:=cCGC;
                        FormStatusProgramacao.Label10.Caption:=cIE;
                end;
                Memo1.Lines.Add('CGC e IE:'+inttostr(Resposta));
        end
        else begin
                // CGC e IE e IM ----------------------------------------------------------
                cCGC:=#0;cIE:=#0;cIM:=#0; Setlength(cCGC,20);Setlength(cIE,20);Setlength(cIM,20);
                FOrmStatusProgramacao.GroupBox9.Caption:='CNPJ MFD';
                FOrmStatusProgramacao.GroupBox10.Caption:='Inscricao Estadual MFD';
                FormPrincipal.Statusbar1.Panels[0].Text:='CNPJ MFD'; WaitProcess;
                Resposta:= ECF_CNPJMFD(cCGC);
                if Resposta=1 then FormStatusProgramacao.Label9.Caption:=cCGC;
                Memo1.Lines.Add('CNPJ MFD :'+inttostr(Resposta));

                FormPrincipal.Statusbar1.Panels[0].Text:='Inscricao Estadual MFD'; WaitProcess;
                Resposta:= ECF_InscricaoEstadualMFD(cIE);
                if Resposta=1 then FormStatusProgramacao.Label10.Caption:=cIE;
                Memo1.Lines.Add('Inscricao Estadual MFD:'+inttostr(Resposta));

                FormPrincipal.Statusbar1.Panels[0].Text:='Inscricao Municipal MFD'; WaitProcess;
                Resposta:= ECF_InscricaoMunicipalMFD(cIE);
                if Resposta=1 then FormStatusProgramacao.Label11.Caption:=cIE;
                Memo1.Lines.Add('Inscricao Municipal MFD:'+inttostr(Resposta));

        end;

        // NÚMERO SUBSTITUICOES PROPRIETARIOS-----------------------------------------------------
        cProprietarios:=#0;resposta:=0; Setlength(cproprietarios,5);
        FormPrincipal.Statusbar1.Panels[0].Text:='Número de Substituições de Proprietário'; WaitProcess;
        Resposta:= ECF_NumeroSubstituicoesProprietario(cProprietarios);
        if Resposta=1 then FormStatusProgramacao.Label12.Caption:=cProprietarios;
        Memo1.Lines.Add('Número de Substituições de Proprietário:'+inttostr(Resposta));

        // SÍMBOLO DA MOEDA -----------------------------------------------------
        cSimboloMoeda:=#0;resposta:=0; Setlength(cSimboloMOeda,3);
        FormPrincipal.Statusbar1.Panels[0].Text:='Símbolo da Moeda'; WaitProcess;
        Resposta:= ECF_SimboloMoeda(cSimboloMoeda);
        if Resposta=1 then FormStatusProgramacao.Label13.Caption:=cSImboloMOeda;
        Memo1.Lines.Add('Símbolo da Moeda:'+inttostr(Resposta));

        // NÚMERO SUBSTITUICOES PROPRIETARIOS-----------------------------------------------------
        cCliche:=#0;
        FormPrincipal.Statusbar1.Panels[0].Text:='Clichê Proprietário'; WaitProcess;
        Resposta:= ECF_ClicheProprietario(cCliche);
        if Resposta=1 then FormStatusProgramacao.Memo1.Lines.Add(cCliche);
        Memo1.Lines.Add('Clichê Proprietário:'+inttostr(Resposta));

        // NÚMERO LOJA -----------------------------------------------------
        cLoja:=#0;  resposta:=0; Setlength(cLoja,4);
        FormPrincipal.Statusbar1.Panels[0].Text:='Número da Loja'; WaitProcess;
        Resposta:= ECF_NumeroLoja(cLoja);
        if Resposta=1 then FormStatusProgramacao.Label14.Caption:=cLoja;
        Memo1.Lines.Add('Número da Loja:'+inttostr(Resposta));

        // NÚMERO CAIXA -----------------------------------------------------
        cCaixa:=#0;resposta:=0; Setlength(cCaixa,4);
        FormPrincipal.Statusbar1.Panels[0].Text:='Número do Caixa'; WaitProcess;
        Resposta:= ECF_NumeroCaixa(cCaixa);
        if Resposta=1 then FormStatusProgramacao.Label15.Caption:=cCaixa;
        Memo1.Lines.Add('Número do Caixa:'+inttostr(Resposta));

        // DATA HORA IMPRESSORA -----------------------------------------------------
        cData:=#0;cHora:=#0;Setlength(cdata,6);Setlength(chora,6);
        FormPrincipal.Statusbar1.Panels[0].Text:='Data Hora Impressora'; WaitProcess;
        Resposta:= ECF_DataHoraImpressora(cData,cHora);
        if Resposta=1 then FormStatusProgramacao.Label16.Caption:=Format('%s/%s/%s',[Copy(cData,1,2),Copy(cData,3,2),Copy(cData,3,2)])+' '+Format('%s:%s:%s',[Copy(cHora,1,2),Copy(cHora,3,2),Copy(cHora,3,2)]);
        Memo1.Lines.Add('Data Hora Impresora:'+inttostr(Resposta));

        // ALÍQUOTAS -----------------------------------------------------------------
        cAliquotas:=#0;
        FormPrincipal.Statusbar1.Panels[0].Text:='Ler Alíquotas com Índice'; WaitProcess;
        CapturaDadosProgamadosECF(3);
        FormStatusProgramacao.SG_Aliquotas.Cells[0,0]:='Tipo';
        FormStatusProgramacao.SG_Aliquotas.Cells[1,0]:='Índice';
        FormStatusProgramacao.SG_Aliquotas.Cells[2,0]:='Taxa';
        for i:=1 to 50 do
        begin
               FormStatusProgramacao.SG_Aliquotas.Cells[0,i]:=cTributacoes[i].tipo;
               FormStatusProgramacao.SG_Aliquotas.Cells[1,i]:=cTributacoes[i].indice;
               FormStatusProgramacao.SG_Aliquotas.Cells[2,i]:=cTributacoes[i].taxa;
        end;
        Memo1.Lines.Add('Ler Alíquotas com Índice:'+inttostr(Resposta));

        // TOTALIZADORES NÃO FISCAIS -----------------------------------------------------------------
        cAliquotas:=#0;
        FormPrincipal.Statusbar1.Panels[0].Text:='Verifica Totalizadores Não Fiscais MFD'; WaitProcess;
        CapturaDadosProgamadosECF(4);
        FormStatusProgramacao.SG_TotalizadoresNaoFiscais.Cells[0,0]:='DESCRIÇÃO';

        for i:=1 to 30 do
        begin
               FormStatusProgramacao.SG_TotalizadoresNaoFiscais.Cells[0,i]:=NaoFiscais[i].Legenda;
        end;
        Memo1.Lines.Add('Verifica Totalizadores Nao Fiscais MFD:'+inttostr(Resposta));

        // MODO DE OPERAÇÃO ---------------------------------------------------------
        cModoOperacao:=#0;resposta:=0; Setlength(cModoOperacao,2);
        FormPrincipal.Statusbar1.Panels[0].Text:='Verifica Modo Operação'; WaitProcess;
        Resposta:= ECF_VerificaModoOperacao(cModoOperacao);
        if Resposta=1 then
                if cModoOperacao='1' then FormStatusProgramacao.Label17.Caption:='Normal'
                else FormStatusProgramacao.Label17.Caption:='MIT';
        Memo1.Lines.Add('Verifica Modo Operação:'+inttostr(Resposta));

        // MEIOS DE PAGAMENTO -----------------------------------------------------------------
        cAliquotas:=#0;
        FormPrincipal.Statusbar1.Panels[0].Text:='Verifica Descricao Formas Pagamento'; WaitProcess;
        CapturaDadosProgamadosECF(2);
        FormStatusProgramacao.SG_Pagamento.Cells[0,0]:='DESCRIÇÃO';
        for i:=1 to 16 do
        begin
               FormStatusProgramacao.SG_Pagamento.Cells[0,i]:=MeiosPagamento[i].Legenda;

        end;
        Memo1.Lines.Add('Verifica Descricao Formas Pagamento:'+inttostr(Resposta));

        // RELATORIO GERENCIAL -----------------------------------------------------------------
        cAliquotas:=#0;
        FormPrincipal.Statusbar1.Panels[0].Text:='Verifica Relatório Gerencial Prog MFD'; WaitProcess;
        CapturaDadosProgamadosECF(5);
        FormStatusProgramacao.SG_RelatorioGerencial.Cells[0,0]:='DESCRIÇÃO';
        for i:=1 to 30 do
        begin
                FormStatusProgramacao.SG_RelatorioGerencial.Cells[0,i]:=RelatorioGer[i].Legenda;
        end;
        Memo1.Lines.Add('Verifica Relatório Gerencial Prog MFD:'+inttostr(Resposta));

        // CASAS DECIMAIS  -----------------------------------------------------
        cUnit:=#0;cQtde:=#0; resposta:=0; Setlength(cUnit,2);Setlength(cQtde,2);
        FormPrincipal.Statusbar1.Panels[0].Text:='Casas Decimais Programada'; WaitProcess;
        Resposta:= ECF_CasasDecimaisProgramada(cUnit,cQtde);
        if Resposta=1 then FormStatusProgramacao.Label18.Caption:='Unitario:'+cUnit+' Qtde:'+cQtde;
        Memo1.Lines.Add('Casas Decimais Programada:'+inttostr(Resposta));

        // VERIFICA TRUNCAMENTO  -----------------------------------------------------
        cTrunca:=#0; resposta:=0; Setlength(ctrunca,1);
        FormPrincipal.Statusbar1.Panels[0].Text:='Verifica Truncamento'; WaitProcess;
        Resposta:= ECF_VerificaTruncamento(cTrunca);
        if Resposta=1 then
        if ctrunca='0'Then FormStatusProgramacao.Label19.Caption:='Arredondamento ABNT habilitado'
        else FormStatusProgramacao.Label19.Caption:='Preço total será truncado';
        Memo1.Lines.Add('Verifica Truncamento:'+inttostr(Resposta));
        Memo1.Lines.Add(' ');

        // EXIBE STATUS ----------------------------------------------------------
        FormStatusProgramacao.ShowModal;
        HabilitaDesabilitaItensMenu(1); // Habilita menu
        FormPrincipal.cursor:=crDefault;
        FormPrincipal.Refresh;
end;

procedure TFormPrincipal.ValoresdaltimaTransao1Click(Sender: TObject);
var
        i:integer;
        cTipo, cItem, cSubtotal, cValor, cCOO:String;
        cDescricaoPagamento:Array[0..50] of String;
        cValorcupom:Array[0..50] of String;
        cValorAcumulado:Array[0..50] of String;
        cFezTef:Array[0..50] of String;

{        cTipo:Array[0..3] of char;
        cItem:Array[0..4] of char;
        cSubtotal:Array[0..14] of char;
        cValor:Array[0..14] of char;
        cCOO:Array[0..6] of char;
        cDescricaoPagamento:Array[0..50] of char;
        cValorcupom:Array[0..50] of char;
        cValorAcumulado:Array[0..50] of char;
        cFezTef:Array[0..50] of char;
}
begin
        FormUltimaTransacao.Label1.Font.Color:=clBlack;
        FormUltimaTransacao.Label2.Font.Color:=clBlack;
        FormUltimaTransacao.Label3.Font.Color:=clBlack;
        FormUltimaTransacao.Label4.Font.Color:=clBlack;
        FormUltimaTransacao.Label5.Font.Color:=clBlack;
        FormUltimaTransacao.Label6.Font.Color:=clBlack;
        FormUltimaTransacao.Label7.Font.Color:=clBlack;
        FormUltimaTransacao.Label8.Font.Color:=clBlack;
        FormUltimaTransacao.Label9.Font.Color:=clBlack;
        FormUltimaTransacao.Label10.Font.Color:=clBlack;
        FormUltimaTransacao.Label11.Font.Color:=clBlack;
        FormUltimaTransacao.Label12.Font.Color:=clBlack;


        // Ultimo Documento ----------------------------------------------------------
        cTipo:=#0; resposta:=0; SetLength(cTipo,3);
        Statusbar1.Panels[0].Text:='Tipo Último Documento'; WaitProcess;
        Resposta:= ECF_TipoUltimoDocumento(cTipo);
        if Resposta=1 then
        begin
                if ctipo='CF ' then FormUltimaTransacao.Label1.Font.Color:=clRed
                else if ctipo = 'CFC' then FormUltimaTransacao.Label2.Font.Color:=clRed
                else if ctipo = 'CNF' then FormUltimaTransacao.Label3.Font.Color:=clRed
                else if ctipo = 'CCD' then FormUltimaTransacao.Label4.Font.Color:=clRed
                else if ctipo = 'RG ' then FormUltimaTransacao.Label5.Font.Color:=clRed
                else if ctipo = 'LRZ' then FormUltimaTransacao.Label6.Font.Color:=clRed
                else if ctipo = 'LX ' then FormUltimaTransacao.Label7.Font.Color:=clRed
                else if ctipo = 'LMF' then FormUltimaTransacao.Label8.Font.Color:=clRed
                else if ctipo = 'LP ' then FormUltimaTransacao.Label9.Font.Color:=clRed
                else if ctipo = 'NFC' then FormUltimaTransacao.Label10.Font.Color:=clRed
                else if ctipo = 'ECD' then FormUltimaTransacao.Label11.Font.Color:=clRed
                else  FormUltimaTransacao.Label12.Font.Color:=clRed;
        end;
        Memo1.Lines.Add('Tipo Último Documento:'+inttostr(Resposta));

        // ITEM VENDIDO ----------------------------------------------------------
        ciTem:=#0; resposta:=0; SetLength(cTipo,4);
        Statusbar1.Panels[0].Text:='Último Item Vendido'; WaitProcess;
        Resposta:= ECF_TipoUltimoDocumento(cTipo);
        if Resposta=1 then FormUltimaTransacao.Label13.Caption:=cItem;
        Memo1.Lines.Add('Último Iterm Vendido:'+inttostr(Resposta));

        // SUBTOTAL ----------------------------------------------------------
        cSubtotal:=#0; resposta:=0; SetLength(cSubtotal,14);
        Statusbar1.Panels[0].Text:='Subtotal'; WaitProcess;
        Resposta:= ECF_SubTotal(cSubtotal);
        if Resposta=1 then begin
                try
                FormUltimaTransacao.Label14.Caption:=Format('%10.2f',[StrtoFloat(cSubtotal)/100]);
                except
                FormUltimaTransacao.Label14.Caption:=' ';
                end
        end;
        Memo1.Lines.Add('Subtotal:'+inttostr(Resposta));

        // SUBTOTAL COMPROVANTE NAO FISCAL MFD ---------------------------------------
        cSubtotal:=#0; resposta:=0; SetLength(cSubtotal,14);
        Statusbar1.Panels[0].Text:='Subtotal Comprovante Não Fiscal MFD'; WaitProcess;
        Resposta:= ECF_SubTotalComprovanteNaoFiscalMFD(cSubtotal);
        if Resposta=1 then  begin
                try
                FormUltimaTransacao.Label15.Caption:=Format('%10.2f',[StrtoFloat(cSubtotal)/100]);
                except
                FormUltimaTransacao.Label15.Caption:=' ';
                end
        end;
        Memo1.Lines.Add('Subtotal Comprovante Não Fiscal MFD:'+inttostr(Resposta));

        // VALOR PAGO ÚLTIMO CUPOM ---------------------------------------------------
        cValor:=#0;resposta:=0; SetLength(cValor,14);
        Statusbar1.Panels[0].Text:='Valor Pago Último Cupom'; WaitProcess;
        Resposta:= ECF_ValorPagoUltimoCupom(cValor);
        if Resposta=1 then  begin
                try
                FormUltimaTransacao.Label16.Caption:=Format('%10.2f',[StrtoFloat(cValor)/100]);
                except
                FormUltimaTransacao.Label16.Caption:=' ';
                end
        end;
        Memo1.Lines.Add('Valor Pago Último Cupom:'+inttostr(Resposta));

        // Número CUPOM ---------------------------------------------------
        cCOO:=#0;resposta:=0; SetLength(cCOO,4);
        Statusbar1.Panels[0].Text:='Número Cupom'; WaitProcess;
        Resposta:= ECF_NumeroCupom(cCOO);
        if Resposta=1 then FormUltimaTransacao.Label17.Caption:=cCOO;
        Memo1.Lines.Add('Número Cupom:'+inttostr(Resposta));


        // TOTAIS MEIOS PAGAMENTO -----------------------------------------------------------------
        cValorCupom[0]:=#0;cValorACumulado[0]:=#0;cDEscricaoPagamento[0]:=#0;cFEzTef[0]:=#0;
        Statusbar1.Panels[0].Text:='Verifica Formas Pagamento'; WaitProcess;
        CapturaDadosProgamadosECF(6);
        FormUltimaTransacao.StringGrid1.Cells[0,0]:='Descrição';
        FormUltimaTransacao.StringGrid1.Cells[1,0]:='Valor Recebido Cupom';
        FormUltimaTransacao.StringGrid1.Cells[2,0]:='TEF';

        for i:=1 to 50 do
        begin
                FormUltimaTransacao.StringGrid1.Cells[0,i]:=TotaisPagamento[i].Legenda;
                try
                        FormUltimaTransacao.StringGrid1.Cells[1,i]:=Format('%10.2f',[StrtoFloat(TotaisPagamento[i].ValorCupom)/100]);
                except
                        FormUltimaTransacao.StringGrid1.Cells[1,i]:=' ';
                end;
                if TotaisPagamento[i].Vinculado='1' then FormUltimaTransacao.StringGrid1.Cells[2,i]:='S'
                else if TotaisPagamento[i].Vinculado='0' then FormUltimaTransacao.StringGrid1.Cells[2,i]:='N'
        end;
        Memo1.Lines.Add('Verifica Formas Pagamento:'+inttostr(Resposta));

        // TOTAIS VENDA -----------------------------------------------------------------

        FormUltimaTransacao.StringGrid2.Cells[0,0]:='Desconto ICMS';
        FormUltimaTransacao.StringGrid2.Cells[0,1]:='Desconto ISS';
        FormUltimaTransacao.StringGrid2.Cells[0,2]:='Acréscimo ICMS';
        FormUltimaTransacao.StringGrid2.Cells[0,3]:='Acréscimo ISS';
        FormUltimaTransacao.StringGrid2.Cells[0,4]:='Cancelamento ICMS';
        FormUltimaTransacao.StringGrid2.Cells[0,5]:='Cancelamento ISS';
        FormUltimaTransacao.StringGrid2.Cells[0,6]:='Venda Líquida ICMS';
        FormUltimaTransacao.StringGrid2.Cells[0,7]:='Venda Líquida ISS';
        FormUltimaTransacao.StringGrid2.Cells[0,8]:='Venda Bruta ICMS';
        FormUltimaTransacao.StringGrid2.Cells[0,9]:='Venda Bruta ISS';
        FormUltimaTransacao.StringGrid2.Cells[0,10]:='Desconto Nao Fiscal';
        FormUltimaTransacao.StringGrid2.Cells[0,11]:='Acréscimo Nao Fiscal';
        FormUltimaTransacao.StringGrid2.Cells[0,12]:='Cancelamento Nao Fiscal';
        CapturaDadosProgamadosECF(7);

        try
                FormUltimaTransacao.StringGrid2.Cells[1,0]:=Format('%10.2f',[StrtoFloat(TotaisX.DescontoICMS)/100]);
        except
                FormUltimaTransacao.StringGrid2.Cells[1,0]:=' ';
        end;
        try
                FormUltimaTransacao.StringGrid2.Cells[1,1]:=Format('%10.2f',[StrtoFloat(TotaisX.DescontoISS)/100]);
        except
                FormUltimaTransacao.StringGrid2.Cells[1,1]:=' ';
        end;
        try
                FormUltimaTransacao.StringGrid2.Cells[1,2]:=Format('%10.2f',[StrtoFloat(TotaisX.AcrescimoICMS)/100]);
        except
                FormUltimaTransacao.StringGrid2.Cells[1,2]:=' ';
        end;
        try
                FormUltimaTransacao.StringGrid2.Cells[1,3]:=Format('%10.2f',[StrtoFloat(TotaisX.AcrescimoISS)/100]);
        except
                FormUltimaTransacao.StringGrid2.Cells[1,3]:=' ';
        end;
        try
                FormUltimaTransacao.StringGrid2.Cells[1,4]:=Format('%10.2f',[StrtoFloat(TotaisX.CancelamentoICMS)/100]);
        except
                FormUltimaTransacao.StringGrid2.Cells[1,4]:=' ';
        end;
        try
                FormUltimaTransacao.StringGrid2.Cells[1,5]:=Format('%10.2f',[StrtoFloat(TotaisX.CancelamentoISS)/100]);
        except
                FormUltimaTransacao.StringGrid2.Cells[1,5]:=TotaisX.CancelamentoISS;
        end;
        try
                FormUltimaTransacao.StringGrid2.Cells[1,6]:=Format('%10.2f',[StrtoFloat(TotaisX.VLICMS)/100]);
        except
                FormUltimaTransacao.StringGrid2.Cells[1,6]:=' ';
        end;
        try
                FormUltimaTransacao.StringGrid2.Cells[1,7]:=Format('%10.2f',[StrtoFloat(TotaisX.VLISS)/100]);
        except
                FormUltimaTransacao.StringGrid2.Cells[1,7]:=' ';
        end;
        try
                FormUltimaTransacao.StringGrid2.Cells[1,8]:=Format('%10.2f',[StrtoFloat(TotaisX.VBICMS)/100]);
        except
                FormUltimaTransacao.StringGrid2.Cells[1,8]:=' ';
        end;
        try
                FormUltimaTransacao.StringGrid2.Cells[1,9]:=Format('%10.2f',[StrtoFloat(TotaisX.VBISS)/100]);
        except
                FormUltimaTransacao.StringGrid2.Cells[1,9]:=' ';
        end;
        try
                FormUltimaTransacao.StringGrid2.Cells[1,10]:=Format('%10.2f',[StrtoFloat(TotaisX.DescontoNaoFiscal)/100]);
        except
                FormUltimaTransacao.StringGrid2.Cells[1,10]:=' ';
        end;
        try
                FormUltimaTransacao.StringGrid2.Cells[1,11]:=Format('%10.2f',[StrtoFloat(TotaisX.AcrescimoNaoFiscal)/100]);
        except
                FormUltimaTransacao.StringGrid2.Cells[1,11]:=' ';
        end;
        try
                FormUltimaTransacao.StringGrid2.Cells[1,12]:=Format('%10.2f',[StrtoFloat(TotaisX.CancelamentoNaoFiscal)/100]);
        except
                FormUltimaTransacao.StringGrid2.Cells[1,12]:=' ';
        end;

        FormUltimaTransacao.StringGrid3.Cells[0,0]:='Tipo';
        FormUltimaTransacao.StringGrid3.Cells[1,0]:='Taxa';
        FormUltimaTransacao.StringGrid3.Cells[2,0]:='Totalizador';
        for i:=1 to 15 do begin
                try
                FormUltimaTransacao.StringGrid3.Cells[0,i]:=TotaisX.Aliquotas[i-1].Tipo;
                FormUltimaTransacao.StringGrid3.Cells[1,i]:=TotaisX.Aliquotas[i-1].Taxa;
                FormUltimaTransacao.StringGrid3.Cells[2,i]:=Format('%11.2f',[StrtoFloat(TotaisX.Aliquotas[i-1].Totalizador)/100]);
                except
                end;
        end;

        // VALOR ACRESCIMO ULTIMO CUPOM ----------------------------------------------------------
        cSubtotal:=#0;resposta:=0; SetLength(cSubtotal,14);
        Statusbar1.Panels[0].Text:='Valor Acréscimos Último Cupom'; WaitProcess;
        Resposta:= ECF_ValorAcrescimosUltimoCupom(cSubtotal);
        if Resposta=1 then begin
                try
                FormUltimaTransacao.Label18.Caption:=Format('%10.2f',[StrtoFloat(cSubtotal)/100]);
                except
                FormUltimaTransacao.Label18.Caption:=' ';
                end
        end;
        Memo1.Lines.Add('Valor Acréscimos Último Cupom:'+inttostr(Resposta));

        // VALOR DESCONTO ULTIMO CUPOM ----------------------------------------------------------
        cSubtotal:=#0;resposta:=0; SetLength(cSubtotal,14);
        Statusbar1.Panels[0].Text:='Valor Descontos Último Cupom'; WaitProcess;
        Resposta:= ECF_ValorDescontosUltimoCupom(cSubtotal);
        if Resposta=1 then begin
                try
                FormUltimaTransacao.Label19.Caption:=Format('%10.2f',[StrtoFloat(cSubtotal)/100]);
                except
                FormUltimaTransacao.Label19.Caption:=' ';
                end
        end;
        Memo1.Lines.Add('Valor Descontos Último Cupom:'+inttostr(Resposta));

        // VALOR Cancelamentos ULTIMO CUPOM ----------------------------------------------------------
        cSubtotal:=#0; resposta:=0; SetLength(cSubtotal,14);
        Statusbar1.Panels[0].Text:='Valor Cancelamentos Último Cupom (ICMS)'; WaitProcess;
        Resposta:= ECF_ValorCancelamentosUltimoCupom(cSubtotal);
        if Resposta=1 then begin
                try
                FormUltimaTransacao.Label20.Caption:=Format('%10.2f',[StrtoFloat(cSubtotal)/100]);
                except
                FormUltimaTransacao.Label20.Caption:=' ';
                end
        end;
        Memo1.Lines.Add('Valor Cancelamentos Último Cupom (ICMS):'+inttostr(Resposta));

        // Valor Cancelamentos Ultimo Cupom (ISS)-------------------------------------
        cSubtotal:=#0; resposta:=0; SetLength(cSubtotal,14);
        Statusbar1.Panels[0].Text:='Valor Cancelamentos Último Cupom (ISS)'; WaitProcess;
        Resposta:= ECF_ValorCancelamentosUltimoCupomISS(cSubtotal);
        if Resposta=1 then begin
                try
                FormUltimaTransacao.Label21.Caption:=Format('%10.2f',[StrtoFloat(cSubtotal)/100]);
                except
                FormUltimaTransacao.Label21.Caption:=' ';
                end
        end;
        Memo1.Lines.Add('Valor Cancelamentos Último Cupom (ISS):'+inttostr(Resposta));
        Memo1.Lines.Add(' ');

        // EXIBE STATUS ----------------------------------------------------------
        FormUltimaTransacao.ShowModal;
        HabilitaDesabilitaItensMenu(1); // Habilita menu
        FormPrincipal.cursor:=crDefault;
        FormPrincipal.Refresh;
end;

procedure TFormPrincipal.AcumuladoresDirios1Click(Sender: TObject);
var
        i:integer;
//        cValor:Array[0..18] of char;
        cValor:String;
begin
        // VALOR ACRESCIMO ----------------------------------------------------------
        cValor:=#0;  setLength(cvalor,18);
        Statusbar1.Panels[0].Text:='Acréscimos:'; WaitProcess;
        Resposta:= ECF_Acrescimos(cValor);
        if Resposta=1 then begin
                try
                FormAcumuladoresDiarios.Label1.Caption:=Format('%10.2f',[StrtoFloat(cValor)/100]);
                except
                FormAcumuladoresDiarios.Label1.Caption:=' ';
                end
        end;
        Memo1.Lines.Add('Acréscimos:'+inttostr(Resposta));


        // VALOR Desconto ----------------------------------------------------------
        cValor:=#0; setLength(cvalor,18);
        Statusbar1.Panels[0].Text:='Descontos:'; WaitProcess;
        Resposta:= ECF_Descontos(cValor);
        if Resposta=1 then begin
                try
                FormAcumuladoresDiarios.Label2.Caption:=Format('%10.2f',[StrtoFloat(cValor)/100]);
                except
                FormAcumuladoresDiarios.Label2.Caption:=' ';
                end
        end;
        Memo1.Lines.Add('Descontos:'+inttostr(Resposta));

        // TOTAIS NÃO FISCAIS -----------------------------------------------------------------

        Statusbar1.Panels[0].Text:='Verifica Recebimento Não Fiscal MFD'; WaitProcess;
        CapturaDadosProgamadosECF(8);
        FormAcumuladoresDiarios.StringGrid1.Cells[0,0]:='Descrição';
        FormAcumuladoresDiarios.StringGrid1.Cells[1,0]:='Valor';
        FormAcumuladoresDiarios.StringGrid1.Cells[2,0]:='Contador';
        for i:=1 to 28 do
        begin
                FormAcumuladoresDiarios.StringGrid1.Cells[0,i]:=TotaisNaoFiscais[i].Descricao;
                try
                        FormAcumuladoresDiarios.StringGrid1.Cells[1,i]:=Format('%10.2f',[StrtoFloat(TotaisNaoFiscais[i].Valor)/100]);
                except
                        FormAcumuladoresDiarios.StringGrid1.Cells[1,i]:=' ';
                end;
        end;
        Memo1.Lines.Add('Verifica Recebimento Não Fiscal MFD:'+inttostr(Resposta));


        // VALOR Cancelamentos ----------------------------------------------------------
        cValor:=#0; setLength(cvalor,18);
        Statusbar1.Panels[0].Text:='Cancelamentos:'; WaitProcess;
        Resposta:= ECF_Cancelamentos(cValor);
        if Resposta=1 then begin
                try
                FormAcumuladoresDiarios.Label3.Caption:=Format('%10.2f',[StrtoFloat(cValor)/100]);
                except
                FormAcumuladoresDiarios.Label3.Caption:=' ';
                end
        end;
        Memo1.Lines.Add('Cancelamentos:'+inttostr(Resposta));


        // VALOR Grande Total ----------------------------------------------------------
        cValor:=#0; setLength(cvalor,18);
        Statusbar1.Panels[0].Text:='Grande Total:'; WaitProcess;
        Resposta:= ECF_GrandeTotal(cValor);
        if Resposta=1 then begin
                try
                FormAcumuladoresDiarios.Label4.Caption:=Format('%18.2f',[StrtoFloat(cValor)/100]);
                except
                FormAcumuladoresDiarios.Label4.Caption:=' ';
                end
        end;
        Memo1.Lines.Add('Grande Total:'+inttostr(Resposta));

        // VALOR Venda Bruta ----------------------------------------------------------
        cValor:=#0;setLength(cvalor,18);
        Statusbar1.Panels[0].Text:='Venda Bruta:'; WaitProcess;
        Resposta:= ECF_VendaBruta(cValor);
        if Resposta=1 then begin
                try
                FormAcumuladoresDiarios.Label5.Caption:=Format('%18.2f',[StrtoFloat(cValor)/100]);
                except
                FormAcumuladoresDiarios.Label5.Caption:=' ';
                end
        end;
        Memo1.Lines.Add('Venda Bruta:'+inttostr(Resposta));

        // VALOR ACréscimo Não Fiscal ----------------------------------------------------------
        cValor:=#0; setLength(cvalor,18);
        Statusbar1.Panels[0].Text:='Retorna Acréscimo NF:'; WaitProcess;
        Resposta:= ECF_RetornaAcrescimoNF(cValor);
        if Resposta=1 then begin
                try
                FormAcumuladoresDiarios.Label6.Caption:=Format('%10.2f',[StrtoFloat(cValor)/100]);
                except
                FormAcumuladoresDiarios.Label6.Caption:=' ';
                end
        end;
        Memo1.Lines.Add('Retorna Acréscimo NF:'+inttostr(Resposta));

        // VALOR Desconto Não Fiscal ----------------------------------------------------------
        cValor:=#0; setLength(cvalor,18);
        Statusbar1.Panels[0].Text:='Retorna Desconto NF:'; WaitProcess;
        Resposta:= ECF_RetornaDescontoNF(cValor);
        if Resposta=1 then begin
                try
                FormAcumuladoresDiarios.Label7.Caption:=Format('%10.2f',[StrtoFloat(cValor)/100]);
                except
                FormAcumuladoresDiarios.Label7.Caption:=' ';
                end
        end;
        Memo1.Lines.Add('Retorna Desconto NF:'+inttostr(Resposta));

        // VALOR Cancelamento Não Fiscal ----------------------------------------------------------
        cValor:=#0; setLength(cvalor,18);
        Statusbar1.Panels[0].Text:='Retorna Cancelamento NF:'; WaitProcess;
        Resposta:= ECF_RetornaCancelamentoNF(cValor);
        if Resposta=1 then begin
                try
                FormAcumuladoresDiarios.Label8.Caption:=Format('%10.2f',[StrtoFloat(cValor)/100]);
                except
                FormAcumuladoresDiarios.Label8.Caption:=' ';
                end
        end;
        Memo1.Lines.Add('Retorna Cancelamento NF:'+inttostr(Resposta));

        // VALOR Troco ----------------------------------------------------------
        cValor:=#0; setLength(cvalor,18);
        Statusbar1.Panels[0].Text:='Retorna Troco:'; WaitProcess;
        Resposta:= ECF_RetornaTroco(cValor);
        if Resposta=1 then begin
                try
                FormAcumuladoresDiarios.Label9.Caption:=Format('%10.2f',[StrtoFloat(cValor)/100]);
                except
                FormAcumuladoresDiarios.Label9.Caption:=' ';
                end
        end;
        Memo1.Lines.Add('Retorna Troco:'+inttostr(Resposta));
        Memo1.Lines.Add(' ');

        // EXIBE STATUS ----------------------------------------------------------
        FormAcumuladoresDiarios.ShowModal;
        HabilitaDesabilitaItensMenu(1); // Habilita menu
        FormPrincipal.cursor:=crDefault;
        FormPrincipal.Refresh;

end;

procedure TFormPrincipal.Contadores1Click(Sender: TObject);
var
//        cValor:Array[0..6] of char;
//        cValor2:Array[0..6] of char;
        cvalor, cvalor2:String;
begin
        // CRO --------------------------------------------------------------------
        cValor:=#0; SetLength(cvalor,6);
        Statusbar1.Panels[0].Text:='Número Intervenções (CRO):'; WaitProcess;
        Resposta:= ECF_NumeroIntervencoes(cValor);
        if Resposta=1 then FormContadores.Label1.Caption:=cValor;

        Memo1.Lines.Add('Número Intervenções (CRO):'+inttostr(Resposta));

        // CCF --------------------------------------------------------------------
        cValor:=#0; SetLength(cvalor,6);
        Statusbar1.Panels[0].Text:='Contador de Cupom Fiscal (CCF):'; WaitProcess;
        Resposta:= ECF_ContadorCupomFiscalMFD(cValor);
        if Resposta=1 then FormContadores.Label2.Caption:=cValor;

        Memo1.Lines.Add('Contador de Cupom Fiscal (CCF):'+inttostr(Resposta));

        // CFC --------------------------------------------------------------------
        cValor:=#0; SetLength(cvalor,6);
        Statusbar1.Panels[0].Text:='Número Cupons Cancelados (CFC):'; WaitProcess;
        Resposta:= ECF_NumeroCuponsCancelados(cValor);
        if Resposta=1 then FormContadores.Label3.Caption:=cValor;

        Memo1.Lines.Add('Número Cupons Cancelados (CFC):'+inttostr(Resposta));

        // GNF --------------------------------------------------------------------
        cValor:=#0; SetLength(cvalor,6);
        Statusbar1.Panels[0].Text:='Número Operações Não Fiscais (GNF):'; WaitProcess;
        Resposta:= ECF_NumeroOperacoesNaoFiscais(cValor);
        if Resposta=1 then FormContadores.Label4.Caption:=cValor;

        Memo1.Lines.Add('Número Operações Não Fiscais (GNF):'+inttostr(Resposta));

        // CDC --------------------------------------------------------------------
        cValor:=#0; SetLength(cvalor,6);
        Statusbar1.Panels[0].Text:='Contador Comprovante Crédito MFD (CDC):'; WaitProcess;
        Resposta:= ECF_ContadorComprovantesCreditoMFD(cValor);
        if Resposta=1 then FormContadores.Label5.Caption:=cValor;

        Memo1.Lines.Add('Contador Comprovante Crédito MFD (CDC):'+inttostr(Resposta));

        // NCN --------------------------------------------------------------------
        cValor:=#0; SetLength(cvalor,6);
        Statusbar1.Panels[0].Text:='Comprovantes Não Fiscais Não Emitidos (NCN):'; WaitProcess;
        Resposta:= ECF_ComprovantesNaoFiscaisNaoEmitidosMFD(cValor);
        if Resposta=1 then FormContadores.Label6.Caption:=cValor;

        Memo1.Lines.Add('Comprovantes Não Fiscais Não Emitidos (NCN):'+inttostr(Resposta));

        // NFC --------------------------------------------------------------------
        cValor:=#0; SetLength(cvalor,6);
        Statusbar1.Panels[0].Text:='Contador Operações Não Fiscais Canceladas MFD (NFC):'; WaitProcess;
        Resposta:= ECF_ContadorOperacoesNaoFiscaisCanceladasMFD(cValor);
        if Resposta=1 then FormContadores.Label7.Caption:=cValor;

        Memo1.Lines.Add('Contador Operações Não Fiscais Canceladas MFD (NFC):'+inttostr(Resposta));

        // CFD --------------------------------------------------------------------
        cValor:=#0; SetLength(cvalor,6);
        Statusbar1.Panels[0].Text:='Contador Fita Detalhe MFD (CFD):'; WaitProcess;
        Resposta:= ECF_ContadorOperacoesNaoFiscaisCanceladasMFD(cValor);
        if Resposta=1 then FormContadores.Label8.Caption:=cValor;

        Memo1.Lines.Add('Contador Fita Detalhe MFD (CFD):'+inttostr(Resposta));

        // GRG --------------------------------------------------------------------
        cValor:=#0; SetLength(cvalor,6);
        Statusbar1.Panels[0].Text:='Contador Relatórios Gerencias MFD (GRG):'; WaitProcess;
        Resposta:= ECF_ContadorRelatoriosGerenciaisMFD(cValor);
        if Resposta=1 then FormContadores.Label9.Caption:=cValor;

        Memo1.Lines.Add('Contador Relatórios Gerencias MFD (GRG):'+inttostr(Resposta));

        // CRZ --------------------------------------------------------------------
        cValor:=#0; SetLength(cvalor,6);
        Statusbar1.Panels[0].Text:='Número Reduções (CRZ):'; WaitProcess;
        Resposta:= ECF_NumeroReducoes(cValor);
        if Resposta=1 then FormContadores.Label10.Caption:=cValor;

        // COO --------------------------------------------------------------------
        cValor:=#0; SetLength(cvalor,6);
        Statusbar1.Panels[0].Text:='Retorna COO:'; WaitProcess;
        Resposta:= ECF_RetornaCOO(cValor);
        if Resposta=1 then FormContadores.Label11.Caption:=cValor;
        Memo1.Lines.Add('Retorna COO:'+inttostr(Resposta));

        // COO Inicial--------------------------------------------------------------------
        cValor:=#0; SetLength(cvalor,6);
        cValor2:=#0; SetLength(cvalor2,6);
        Statusbar1.Panels[0].Text:='COO Início do Dia:'; WaitProcess;
        Resposta:= ECF_COO(cValor,cValor2);
        if Resposta=1 then FormContadores.Label12.Caption:=cValor;
        Memo1.Lines.Add('COO Inicial:'+inttostr(Resposta));
        Memo1.Lines.Add(' ');

        // EXIBE STATUS ----------------------------------------------------------
        FormContadores.ShowModal;
        HabilitaDesabilitaItensMenu(1); // Habilita menu
        FormPrincipal.cursor:=crDefault;
        FormPrincipal.Refresh;


end;

procedure TFormPrincipal.ECF1Click(Sender: TObject);

begin
        FormStatusECF.ShowModal;
end;

procedure TFormPrincipal.RelatrioSintegraMFD1Click(Sender: TObject);
begin
        FormSintegra.ShowModal;
end;

procedure TFormPrincipal.Diversos1Click(Sender: TObject);
begin
        FormDiversos.ShowModal;
end;

procedure TFormPrincipal.ValoresapsaReduoZ1Click(Sender: TObject);
begin
        FormValoresaposRZ.ShowModal;
end;

procedure TFormPrincipal.DadosltimaReduoZ1Click(Sender: TObject);
begin
        FormDadosUltimaZ.ShowModal;
end;

procedure TFormPrincipal.MapaResumoMFD1Click(Sender: TObject);
begin
        // Mapa Resumo MFD --------------------------------------------------------------------
        Statusbar1.Panels[0].Text:='Mapa Resumo MFD'; WaitProcess;
        Resposta:= ECF_MapaResumoMFD;
        Memo1.Lines.Add('Mapa Resumo MFD:'+inttostr(Resposta));
        VerificaRetornoFuncao(Resposta);
        Refresh;
        if Resposta = 1 then
                if MessageDlg('Deseja abrir o arquivo Retorno.TXT?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
                      FormPrincipal.OpenDialog1.FileName:='RETORNO.TXT' ;
                      OpenDialog1.Execute;
                      FormRetorno.Caption:=OpenDialog1.FileName;
                      FormRetorno.RichEdit1.Lines.LoadFromFile(OpenDialog1.FileName);
                      FormRetorno.Show;
                end;
        HabilitaDesabilitaItensMenu(1); // Habilita menu
        FormPrincipal.cursor:=crDefault;
        FormPrincipal.Refresh;
end;

procedure TFormPrincipal.RegistrosTipo601Click(Sender: TObject);
begin
        Statusbar1.Panels[0].Text:='Registros Tipo 60'; WaitProcess;
        Resposta:=ECF_RegistrosTipo60;
        Memo1.Lines.Add('Registros Tipo 60:'+inttostr(Resposta));
        VerificaRetornoFuncao(Resposta);

        if Resposta = 1 then
                if MessageDlg('Deseja abrir o arquivo SINTEGRA.TXT?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
                      FormPrincipal.OpenDialog1.FileName:='SINTEGRA.TXT' ;
                      FormPrincipal.OpenDialog1.Execute;
                      FormRetorno.Caption:=FormPrincipal.OpenDialog1.FileName;
                      FormRetorno.RichEdit1.Lines.LoadFromFile(FormPrincipal.OpenDialog1.FileName);
                      FormRetorno.Show;
                end;
        HabilitaDesabilitaItensMenu(1); // Habilita menu
        FormPrincipal.cursor:=crDefault;
        FormPrincipal.Refresh;

end;

procedure TFormPrincipal.RegistrosTipo60Mestre1Click(Sender: TObject);
begin
        Statusbar1.Panels[0].Text:='Registros Tipo 60 Mestre'; WaitProcess;
        Resposta:=ECF_RelatorioTipo60Mestre;
        Memo1.Lines.Add('Registros Tipo 60 Mestre:'+inttostr(Resposta));
        VerificaRetornoFuncao(Resposta);

        if Resposta = 1 then
                if MessageDlg('Deseja abrir o arquivo SINTEGRA.TXT?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
                      FormPrincipal.OpenDialog1.FileName:='SINTEGRA.TXT' ;
                      FormPrincipal.OpenDialog1.Execute;
                      FormRetorno.Caption:=FormPrincipal.OpenDialog1.FileName;
                      FormRetorno.RichEdit1.Lines.LoadFromFile(FormPrincipal.OpenDialog1.FileName);
                      FormRetorno.Show;
                end;
        HabilitaDesabilitaItensMenu(1); // Habilita menu
        FormPrincipal.cursor:=crDefault;
        FormPrincipal.Refresh;

end;

procedure TFormPrincipal.RegistrosTipo60Analtico1Click(Sender: TObject);
begin
        Statusbar1.Panels[0].Text:='Registros Tipo 60 Analítico'; WaitProcess;
        Resposta:=ECF_RelatorioTipo60Analitico;
        Memo1.Lines.Add('Registros Tipo 60 Analítico:'+inttostr(Resposta));
        VerificaRetornoFuncao(Resposta);

        if Resposta = 1 then
                if MessageDlg('Deseja abrir o arquivo SINTEGRA.TXT?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
                      FormPrincipal.OpenDialog1.FileName:='SINTEGRA.TXT' ;
                      FormPrincipal.OpenDialog1.Execute;
                      FormRetorno.Caption:=FormPrincipal.OpenDialog1.FileName;
                      FormRetorno.RichEdit1.Lines.LoadFromFile(FormPrincipal.OpenDialog1.FileName);
                      FormRetorno.Show;
                end;
        HabilitaDesabilitaItensMenu(1); // Habilita menu
        FormPrincipal.cursor:=crDefault;
        FormPrincipal.Refresh;

end;

procedure TFormPrincipal.RegistrosTipo60AnalticoMFD1Click(Sender: TObject);
begin
        Statusbar1.Panels[0].Text:='Registros Tipo 60 Analítico MFD'; WaitProcess;
        Resposta:=ECF_RelatorioTipo60AnaliticoMFD;
        Memo1.Lines.Add('Registros Tipo 60 Analítico MFD:'+inttostr(Resposta));
        VerificaRetornoFuncao(Resposta);

        if Resposta = 1 then
                if MessageDlg('Deseja abrir o arquivo SINTEGRA.TXT?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
                      FormPrincipal.OpenDialog1.FileName:='SINTEGRA.TXT' ;
                      FormPrincipal.OpenDialog1.Execute;
                      FormRetorno.Caption:=FormPrincipal.OpenDialog1.FileName;
                      FormRetorno.RichEdit1.Lines.LoadFromFile(FormPrincipal.OpenDialog1.FileName);
                      FormRetorno.Show;
                end;
        HabilitaDesabilitaItensMenu(1); // Habilita menu
        FormPrincipal.cursor:=crDefault;
        FormPrincipal.Refresh;
end;

procedure TFormPrincipal.LeituraXSerial1Click(Sender: TObject);
begin
        Statusbar1.Panels[0].Text:='Leitura X Serial'; WaitProcess;
        Resposta:=ECF_LeituraXSerial;
        Memo1.Lines.Add('Leitura X Serial:'+inttostr(Resposta));
        VerificaRetornoFuncao(Resposta);

        if Resposta = 1 then
                if MessageDlg('Deseja abrir o arquivo RETORNO.TXT?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
                      FormPrincipal.OpenDialog1.FileName:='RETORNO.TXT' ;
                      FormPrincipal.OpenDialog1.Execute;
                      FormRetorno.Caption:=FormPrincipal.OpenDialog1.FileName;
                      FormRetorno.RichEdit1.Lines.LoadFromFile(FormPrincipal.OpenDialog1.FileName);
                      FormRetorno.Show;
                end;
        HabilitaDesabilitaItensMenu(1); // Habilita menu
        FormPrincipal.cursor:=crDefault;
        FormPrincipal.Refresh;

end;

procedure TFormPrincipal.PorData2Click(Sender: TObject);
begin
        cdatai:=#0;cdataf:=#0;
        FormSelData.Height:=142;
        FormSelData.ShowModal;

        if not ((cDatai = #0) or (cDataf= #0)) then begin
                Statusbar1.Panels[0].Text:='LMF Serial por Data'; WaitProcess;
                Resposta:= ECF_LeituraMemoriaFiscalSerialData( cDatai,cDataf );

                Memo1.Lines.Add('Leitura da Memória Fiscal Serial por Data:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;

                if Resposta = 1 then
                if MessageDlg('Deseja abrir o arquivo RETORNO.TXT?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
                      FormPrincipal.OpenDialog1.FileName:='RETORNO.TXT' ;
                      FormPrincipal.OpenDialog1.Execute;
                      FormRetorno.Caption:=FormPrincipal.OpenDialog1.FileName;
                      FormRetorno.RichEdit1.Lines.LoadFromFile(FormPrincipal.OpenDialog1.FileName);
                      FormRetorno.Show;
                end;
        end;
        HabilitaDesabilitaItensMenu(1); // Habilita menu
        FormPrincipal.cursor:=crDefault;
        FormPrincipal.Refresh;
end;

procedure TFormPrincipal.PorDataMFD2Click(Sender: TObject);
begin
        cdatai:=#0;cdataf:=#0;
        FormSelData.Height:=185;
        FormSelData.ShowModal;

        if not ((cDatai = #0) or (cDataf= #0)) then begin
                Statusbar1.Panels[0].Text:='LMF Serial por Data MFD'; WaitProcess;
                Resposta:=ECF_LeituraMemoriaFiscalSerialDataMFD( cDatai,cDataf, tipoLeitura );

                Memo1.Lines.Add('Leitura da Memória Fiscal Serial por Data MFD:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;

                if Resposta = 1 then
                if MessageDlg('Deseja abrir o arquivo RETORNO.TXT?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
                      FormPrincipal.OpenDialog1.FileName:='RETORNO.TXT' ;
                      FormPrincipal.OpenDialog1.Execute;
                      FormRetorno.Caption:=FormPrincipal.OpenDialog1.FileName;
                      FormRetorno.RichEdit1.Lines.LoadFromFile(FormPrincipal.OpenDialog1.FileName);
                      FormRetorno.Show;
                end;

        end;
        HabilitaDesabilitaItensMenu(1); // Habilita menu
        FormPrincipal.cursor:=crDefault;
        FormPrincipal.Refresh;

end;

procedure TFormPrincipal.PorReduo1Click(Sender: TObject);
begin
        cReducaoi:=#0;cReducaof:=#0;
        FormSelReducao.Height:=142;
        FormSelReducao.ShowModal;

        if not ((cReducaoi = #0) or (cReducaof= #0)) then begin
                Statusbar1.Panels[0].Text:='LMF Serial por Reducao'; WaitProcess;
                Resposta:=ECF_LeituraMemoriaFiscalSerialReducao( cReducaoi,cReducaof );

                Memo1.Lines.Add('Leitura da Memória Fiscal Serial por Reducao:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;

                if Resposta = 1 then
                if MessageDlg('Deseja abrir o arquivo RETORNO.TXT?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
                      FormPrincipal.OpenDialog1.FileName:='RETORNO.TXT' ;
                      FormPrincipal.OpenDialog1.Execute;
                      FormRetorno.Caption:=FormPrincipal.OpenDialog1.FileName;
                      FormRetorno.RichEdit1.Lines.LoadFromFile(FormPrincipal.OpenDialog1.FileName);
                      FormRetorno.Show;
                end;
        end;
        HabilitaDesabilitaItensMenu(1); // Habilita menu
        FormPrincipal.cursor:=crDefault;
        FormPrincipal.Refresh;
end;

procedure TFormPrincipal.PorReduoMFD2Click(Sender: TObject);
begin
        cReducaoi:=#0;cReducaof:=#0;
        FormSelReducao.Height:=185;
        FormSelReducao.ShowModal;

        if not ((cReducaoi = #0) or (cReducaof= #0)) then begin
                Statusbar1.Panels[0].Text:='LMF Serial por Reducao'; WaitProcess;
                Resposta:=ECF_LeituraMemoriaFiscalSerialReducaoMFD( cReducaoi, cReducaof, tipoLeitura );

                Memo1.Lines.Add('Leitura da Memória Fiscal Serial por Reducao:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
                if Resposta = 1 then
                if MessageDlg('Deseja abrir o arquivo RETORNO.TXT?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
                      FormPrincipal.OpenDialog1.FileName:='RETORNO.TXT' ;
                      FormPrincipal.OpenDialog1.Execute;
                      FormRetorno.Caption:=FormPrincipal.OpenDialog1.FileName;
                      FormRetorno.RichEdit1.Lines.LoadFromFile(FormPrincipal.OpenDialog1.FileName);
                      FormRetorno.Show;
                end;
        end;
        HabilitaDesabilitaItensMenu(1); // Habilita menu
        FormPrincipal.cursor:=crDefault;
        FormPrincipal.Refresh;
end;

procedure TFormPrincipal.Download1Click(Sender: TObject);
begin
        FormDownload.Showmodal;
end;

procedure TFormPrincipal.FormatoDadosMFD1Click(Sender: TObject);
begin
        FormDadosMFD.ShowModal
end;

procedure TFormPrincipal.CapturaDocumentosMFD1Click(Sender: TObject);
begin
        FormCapturaDocumentos.ShowModal;
end;

procedure TFormPrincipal.abelaMercadoriaseServios1Click(Sender: TObject);
begin
        FormTabelaMercadoriasServicos.ShowModal;
end;

procedure TFormPrincipal.ReproduzirMemriaFiscalMFD1Click(Sender: TObject);
begin
        FormReproduzirMFMFD.ShowModal;
end;

procedure TFormPrincipal.GeraRegistrosCAT52MFD1Click(Sender: TObject);
begin
        FormGeraRegistrosCAT52MFD.SHowModal;
end;

procedure TFormPrincipal.ConfiguraCdigodeBarrasMFD1Click(Sender: TObject);
begin
        FOrmCOnfiguraCOdigoBarras.SHowModal;
end;

procedure TFormPrincipal.CODABAR1Click(Sender: TObject);
begin
        FormPrincipal.CodigoBarras:=#0;
        FormCOdigoBarras.Caption:='Código de Barras - CODABAR';
        FormCOdigoBarras.ShowModal;

        if not (CodigoBarras = #0) then begin
                Statusbar1.Panels[0].Text:='Código de Barras - CODABAR'; WaitProcess;

                Resposta:=ECF_CodigoBarrasCODABARMFD(CodigoBarras);

                Memo1.Lines.Add('Código de Barras - CODABAR:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.CODE391Click(Sender: TObject);
begin
        FormPrincipal.CodigoBarras:=#0;
        FormCOdigoBarras.Caption:='Código de Barras - CODE 39';
        FormCOdigoBarras.ShowModal;

        if not (CodigoBarras = #0) then begin
                Statusbar1.Panels[0].Text:='Código de Barras - CODE 39'; WaitProcess;

                Resposta:=ECF_CodigoBarrasCODE39MFD(CodigoBarras);

                Memo1.Lines.Add('Código de Barras - CODE 39:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.EAN131Click(Sender: TObject);
begin
        FormPrincipal.CodigoBarras:=#0;
        FormCOdigoBarras.Caption:='Código de Barras - EAN 13';
        FormCOdigoBarras.ShowModal;

        if not (CodigoBarras = #0) then begin
                Statusbar1.Panels[0].Text:='Código de Barras - EAN 13'; WaitProcess;

                Resposta:=ECF_CodigoBarrasEAN13MFD(CodigoBarras);

                Memo1.Lines.Add('Código de Barras - EAN 13:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.EAN81Click(Sender: TObject);
begin
        FormPrincipal.CodigoBarras:=#0;
        FormCOdigoBarras.Caption:='Código de Barras - EAN 8';
        FormCOdigoBarras.ShowModal;

        if not (CodigoBarras = #0) then begin
                Statusbar1.Panels[0].Text:='Código de Barras - EAN 8'; WaitProcess;

                Resposta:=ECF_CodigoBarrasEAN8MFD(CodigoBarras);

                Memo1.Lines.Add('Código de Barras - EAN 8:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.ITFIntercalado2x51Click(Sender: TObject);
begin
        FormPrincipal.CodigoBarras:=#0;
        FormCOdigoBarras.Caption:='Código de Barras - ITF (Intercalado 2x5)';
        FormCOdigoBarras.ShowModal;

        if not (CodigoBarras = #0) then begin
                Statusbar1.Panels[0].Text:='Código de Barras - ITF (Intercalado 2x5)'; WaitProcess;

                Resposta:=ECF_CodigoBarrasITFMFD(CodigoBarras);

                Memo1.Lines.Add('Código de Barras - ITF (Intercalado 2x5):'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.UPCA1Click(Sender: TObject);
begin
        FormPrincipal.CodigoBarras:=#0;
        FormCOdigoBarras.Caption:='Código de Barras - UPC A';
        FormCOdigoBarras.ShowModal;

        if not (CodigoBarras = #0) then begin
                Statusbar1.Panels[0].Text:='Código de Barras - UPC A'; WaitProcess;

                Resposta:=ECF_CodigoBarrasUPCAMFD(CodigoBarras);

                Memo1.Lines.Add('Código de Barras - UPC A:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;
end;

procedure TFormPrincipal.UPCE1Click(Sender: TObject);
begin
        FormPrincipal.CodigoBarras:=#0;
        FormCOdigoBarras.Caption:='Código de Barras - UPC E';
        FormCOdigoBarras.ShowModal;

        if not (CodigoBarras = #0) then begin
                Statusbar1.Panels[0].Text:='Código de Barras - UPC E'; WaitProcess;

                Resposta:=ECF_CodigoBarrasUPCEMFD(CodigoBarras);

                Memo1.Lines.Add('Código de Barras - UPC E:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

end;

procedure TFormPrincipal.MsgLog1Click(Sender: TObject);
Var ConteudoLog:Array[0..2023] of char;
begin


        Statusbar1.Panels[0].Text:='Captura Mensagem Log (MsgLog)'; WaitProcess;
        ConteudoLog:= #0;
        
        Resposta:= ECF_MsgLog(ConteudoLog);
        VerificaRetornoFuncao(Resposta);
        Memo1.Lines.Add('MsgLog :'+inttostr(Resposta));
        Memo1.Lines.Add('');
        Refresh;

        if Resposta = 1 then
        begin
                FormRetorno.Caption:='MsgLog';
                FormRetorno.RichEdit1.lines.add(ConteudoLog);
                FormRetorno.Show;
        end;


end;

procedure TFormPrincipal.ArquivoSintegra20041Click(Sender: TObject);
begin
        Sintegra2004.ShowModal;
end;

procedure TFormPrincipal.otalizadoresParciaisMFD1Click(Sender: TObject);
begin
       FormTotalizadoresParaciaisMFD.ShowModal;
end;

procedure TFormPrincipal.NomeiaTotalizadorNaoSujeitoaoICMS1Click(
  Sender: TObject);
begin
        FormNomeiaTotalizadorNaoICMS.ShowModal;


        if not ((Textopagamento = #0) or (Parcelas = #0)) then begin
                Statusbar1.Panels[0].Text:='Nomeia Totalizado Não Sujeito ICMS'; WaitProcess;

                Resposta:=ECF_NomeiaTotalizadorNaoSujeitoIcms(strtoint(Parcelas), TextoPagamento);

                Memo1.Lines.Add('Nomeia Totalizado Não Sujeito ICMS:'+inttostr(Resposta));
                Memo1.Lines.Add('');

                VerificaRetornoFuncao(Resposta);
                Refresh;
        end;

        
end;

procedure TFormPrincipal.Apaga1Click(Sender: TObject);
begin
        Resposta:=ECF_ApagaTabelaNomesNaoFiscais;

        Memo1.Lines.Add('Apaga Nomes não Fiscais:'+inttostr(Resposta));
        Memo1.Lines.Add('');

        VerificaRetornoFuncao(Resposta);
        Refresh;

end;

end.
